Uncertain Dynamic Network Flow Problems
Abstract
In this paper, uncertain dynamic network flow problems (UDNFPs) are formulated, and an algorithm is proposed to solve them by noting that arc capacities are uncertain (may vary with time or not), and flow varies over time in each arc. Here, uncertainty refers to nondeterministic states, in which some factors are uncertain and cannot be determined by the probability theory. Since the uncertainty theory seems to be well applicable in these cases, thus, it is applied for the UDNFPs in this paper. Although some papers have studied uncertain network flow problems in the static case, but in the best of our knowledge, this paper is the first one about the UDNFPs.
Keywords
Dynamic network flows Uncertain capacities Optimization Uncertainty theory Uncertain programmingIntroduction
Network flow problems (NFPs) appear in different areas such as electrical and power networks, highway systems, manufacturing and distribution networks, computer networks, neural networks, and water supply systems. Based on different methodologies of their solutions, NFPs could be categorized into three classes: static, dynamic, and uncertain. For a good overview of static NFPs, see Ahuja [1]. Dynamic NFPs are introduced by Ford and Fulkerson [14] and developed by other researchers [2, 12, 13, 37]. Nondeterministic NFPs are usually studied by using the probability theory [2, 8, 11, 17, 31, 32, 34, 35]. It is obvious that the probability theory can be applied to the known sample data, which are not true in many reallife situations such as problems arising from urban traffic networks. Although fuzzy theory is applicable to these problems, but because of some theoretical drawbacks, it cannot handle them efficiently [26]. Liu [26] introduced the uncertainty theory to solve some kinds of uncertain problems where probabilistic and fuzzy theories do not work properly. This theory is well applicable to many problems, especially for uncertain static NFPs [10, 15, 18, 25, 30, 44]. These results motivate us to use the uncertainty theory to solve UDNFPs.
Some materials about dynamic network flow problems and stochastic network flow optimization are noted in this section. In view of [13, 18, 33, 36, 37], we extend the formulations of simple cases to the more complicated ones.
Dynamic Network Flow Problems
Ford and Fulkerson [14] introduced the maximal dynamic flow problem. The problem is defined on a dynamic network N=(V,E,u,τ,{s,t}): a set of nodes V, a set of directed edges E with a nonnegative integral capacity function u and transit times τ, a subset S of nodes, a source s, and a sink t. The goal is to find a dynamic flow that sends as much flow as possible from the source to the sink in a given time horizon T. In the FordFulkerson model, time is measured in discrete steps so that if one unit of flow leaves node i at time θ on arc (i,j), one unit of flow arrives at node j at time θ+τ _{ ij }, where τ _{ ij } is the transit time of arc (i,j). The model also allows storage at any node in the network.
Discrete and Continuous Time Dynamic Network Flows
To handle dynamic network flow problems, we can either (1) model time in discrete time steps or (2) model time continuously. To produce theoretically or practically efficient algorithms, the timeexpanded network is used in the case one either explicitly in algorithms or implicitly in proofs. To prove the existence of optimal solutions and generalize the model, networks with timevarying capacities and costs are considered in the case two.
A discrete dynamic flow is a function g that assigns a flow to each arc at each time step. It must also obey capacity constraints 0≤g(θ)≤u for all time steps θ.
A continuous dynamic flow is a function x that defines the rate of flow (per unit time) entering each arc at each moment of time. The capacity constraints are now flow rate constraints.
L. Fleischer and E. Tardos [13] extended the discrete time dynamic flow algorithms to solve the analogous continuoustime dynamic flow problems. Based on [13], we study UDNFPs just in the discrete time mode.
Dynamic Network Flows and Network Flows Over Time
Most of the dynamic network flow problems are treated in a purely static environment in which the input data is given in advance and assumed to be independent of time, and only the flow changes over time. L. Fleischer and M. Skutella [12] point out that the term dynamic is more consistent for problems in which the data changes over time. Thus, they use the term network flows over time instead of dynamic network flows to express that only the movement of flow through the network over time is considered.
Since in the UDNFPs considered here, arc capacities are uncertain and may vary with time, moreover, flows vary with time; thus, by the above discussion, the term dynamic is appropriate for them.
Stochastic Network Optimization Problem
Many reallife networks behave stochastically, for example in communication systems, production systems, and logistics systems. In practical problems, different types of uncertainty arise which should be taken into account.
Some researchers address the nondeterministic variables as random variables [2, 8, 11, 17, 31, 32, 34, 35] or fuzzy variables [3, 4, 19, 20, 38]. Such researchers use the probability theory developed by Kolmogorov [21] or fuzzy mathematics introduced by Zadeh [43] to model frequencies or fuzzy quantities. They mainly use stochastic optimization, chance constrained programming, robust optimization, and fuzzy techniques to solve some flow problems in uncertain networks. Some others consider the nondeterministic variables under uncertainty theory [10, 15, 18, 25, 30, 44] in which the concept of belief degree introduced by Liu [25] is used.
To deal with some uncertain phenomena, Liu proposed the uncertainty theory in 2007 [25] and refined it in 2010. Uncertainty theory that has become a branch of mathematics for modeling human uncertainty is different from probability theory and fuzzy mathematics. Details about the similarities and differences between Liu’s uncertainty concept and standard probabilistic concept, as well as fuzzy concept can be found in [26, 27]. It has shown theoretically and practically that uncertainty theory is an efficient tool in dealing with nondeterministic information, especially expert data and subjective estimation. From theoretical point of view, uncertain process [22, 41], uncertain differential equation [5, 42], and uncertain logic [29] have been established. From practical point of view, uncertain programming [15, 16, 24, 40], uncertain calculus [7, 23], and uncertain risk analysis [28] have been developed quickly.
It is interesting to know when the uncertainty theory should be used for network problems. When sample data corresponding to nondeterministic variables of a network is not enough, we ask some experts to express their belief degrees. Based on these belief degrees, the uncertainty theory is used to solve the problems.
In this paper, we study the UDNFPs where the word uncertainty refers to nondeterministic situations with poor sample data. In these problems, arc capacities are uncertain and independent from each other, and flow varies through the network over time. Our contribution is to solve some kinds of UDNFPs by uncertainty theory. In fact, UDNFPs can be transformed to DNFPs by using of the uncertainty theory under some conditions. Especially, the uncertain network, which leads to these problems, can be transformed to the equivalent certain network by an algorithm under some conditions.
The rest of the paper is organized as follows. In the “Preliminaries” section, some basic information about the dynamic network flow problems and the uncertainty theory is reviewed. In the “Formulations” section, the formulation of UDNFPs is surveyed. The main algorithm is presented in the “The Main Algorithm of Solving the UDNFPs” section to solve the UDNFPs, and applied to a simple example in the “Numerical Example” section. Finally, the conclusion and future works are given in the “Conclusion and Future Works” section, and declarations are given in the last section.
Preliminaries
Dynamic Network Flow Problems
Let G=(V,E) be a network (directed graph) with a source node s∈V and a sink node t∈V. Each arc e∈E has an associated capacity u _{ e } and a transit time (or length) τ _{ e }≥0. In the setting with costs, each arc e also has a cost coefficient c _{ e }, which determines the cost of sending one unit of flow through the arc. An arc e from node v to node w is sometimes also denoted (v,w); in this case, we write head (e)=w and tail (e)=v. To avoid confusion, we assume without loss of generality that there is at most one arc between any pair of nodes in G and that there are no loops.
Since the UDNFPs comprise of different problems with different shapes, it seems to be better to survey each of them individually. Fortunately, uncertainty theory is applicable for all of them with a same manner (in the case that just capacities are uncertain). Therefore, we just study Uncertain Maximum Dynamic Network Flow problem (UMDNFP) in which the flow varies with time and capacities are uncertain (may vary with time or not). In addition, this problem is regarded just in the discrete time mode because the results could be adopted for continuous time mode according to [13].
Maximum Flows Over Time Problem (MFOTP)
It can be seen that UMDNFP with no uncertain factors turns to MFOTP, thus, we mention some properties of MFOTP. Here, we consider flows over time with a fixed time horizon T≥0.
Definition 1
(Flow over time). A flow over time f with time horizon T consists of a Lebesgue integrable function f _{ e }:[ 0,T)→R _{≥0} for each arc e∈E, moreover f _{ e }(θ)=0 must hold for θ≥T−τ _{ e }. To simplify notation, we sometimes consider f _{ e } as a function with domain \(\mathbb {R}\). In this case, we set f _{ e }(θ):=0 for all θ∉[ 0,T).
We say that f _{ e }(θ) is the rate of flow (i.e., amount of flow per time unit) entering arc e at time θ. The flow particles entering arc e at its tail at time θ arrive at the head of e exactly τ _{ e } time units later. In particular, the outflow rate at the head of arc e at time θ is equal to f _{ e }(θ−τ _{ e }). Definition 1 ensures that all flow has left arc e at time T as f _{ e }(θ)=0 for θ≥T−τ _{ e }.
Definition 2
 (a)
The flow over time f fulfills the capacity constraints (and is called feasible) if f _{ e }(θ)≤u _{ e } for each e∈E and all θ∈ [ 0,T).
 (b)For v∈V, the excess at node v and time θ is the amount of flow that enters node v up to time θ, that is,$$ \text{ex}_{f}(v, \theta):= \sum \limits_{e \in \delta^(v)} \int_{0}^{\theta\tau_{e}} f_{e}(\xi)d\xi \sum \limits_{e \in \delta^+(v)} \int_{0}^{\theta} f_{e}(\xi)d\xi. $$
 (c)
The flow over time f fulfills the weak flow conservation constraints if ex_{ f }(θ)≤0 for each v∈V∖{s,t} and all θ∈ [ 0,T). Moreover, ex_{ f }(T)=0 must hold for each v∈V∖{s,t}.
 (d)
A flow over time satisfying the weak flow conservation constraints is an s−tflow over time. The value of an s−tflow over time with time horizon T is f:=ex_{ f }(t,T).
 (e)
An s−tflow over time f fulfills the strict flow conservation constraints if ex_{ f }(v,θ)=0 for all v∈V∖{s,t} and θ∈ [ 0,T]. The strict flow conservation constraints say that flow must not be stored at intermediate nodes.
Uncertainty
Here, some basic concepts are recalled from [26] which required in the sequel.
Definition 3
Let \(\mathcal {L}\) be a σalgebra on a nonempty set Γ. A set function \(\mathcal {M} : \mathcal {L} \rightarrow [\!0, 1]\) is called an uncertain measure if it satisfies the following axioms:
where Λ _{ k } are arbitrarily chosen events from \(\mathcal {L}_{k}\) for k=1,2,… respectively.
An uncertain variable ξ is a measurable function from an uncertainty space to the set of real numbers. In order to describe an uncertain variable in practice, Liu [25] defined a concept of uncertainty distribution as follows.
Definition 4
for any real number x.
Definition 5
An uncertainty distribution Φ(x) is said to be regular if its inverse function Φ ^{−1}(α) exists for each α∈(0,1).
In this paper, we always assume that uncertainty distributions are regular. Otherwise, we may give the uncertainty distribution a small perturbation to become regular [26].
Definition 6
for any Borel sets B _{1},B _{2},…,B _{ n } of real numbers.
Definition 7
provided that at least one of the two integrals is finite.
Theorem 1
Theorem 2
where Ψ is the uncertainty function of ξ.
Uncertain Programming
Theorem 3
where \(\Phi ^{1}_{f}\) and \(\Psi ^{1}_{g_{j}}\) are the inverse of f(x,ξ) and g _{ j }(x,ξ) respectively.
Formulations
Applying different kinds of criteria (i.e., expected values, belief degrees, etc.) leads to different formulations for a specific problem each of which may have a different solution. Therefore, a suitable criterion is needed to obtain the best possible solution. For more details see [26].
that is, whenever the lower amounts of flows are desirable, we can replace the uncertain capacities with \(\Phi ^{1}_{e}(1\alpha)\) to obtain a certain model of the problems.
BY continuing the above discussion and taking 1−α _{ e } instead of α _{ e }, we see that the amount of flow f _{ e }(θ) is proportional to α _{ e }. In other words, by the confidence level α _{ e } we know that f _{ e }(θ) reaches to its highest value, showing that why this chance constraint is suitable for the latter case.
Lemma 1
Proof
It is enough to replace α by 1−α in Theorem 3. □
Thus, we can replace the uncertain capacities with \(\Phi ^{1}_{e}(\alpha _{e})\) to obtain certain models for these kinds of problems (See [10]).
Now, we are ready to formulate the main problem. Suppose that the capacities u _{ e },e∈E in the model (1) are uncertain variables with the uncertainty distribution functions Φ _{ e }. By the uncertainty theory, the UMDNFP can be formulated as follows.
UMDNFP (Discrete Time Mode)
which is the certain model of (6) and has the same shape of MFOTP. In other words, this is a deterministic MFOTP with certain capacities \(c_{e}=\Phi _{e}^{1}(\alpha _{e})\).
The uncertainty distribution functions and their inverses play an essential rule in uncertainty programming. Thus we remind some materials about them in the following.
Uncertainty Distributions
In [26], we can find the way of obtaining belief degrees to define distribution functions. Liu [27] suggested the principle of least squares to estimate the unknown parameters of uncertainty distribution. Wang et al. [39] applied the Delphi method to determine the uncertainty distribution based on expertise. Chen and Ralescu [6] used Bspline method to estimate the uncertainty distribution.
Some uncertainty distributions are:
denoted by \(\mathcal {L}(a, b)\) where a and b are real numbers with a<b.
denoted by \(\mathcal {Z}(a, b, c)\) where a, b, c are real numbers with a<b<c.
Computing Inverse Uncertainty Distribution Functions
Computing inverse uncertainty distribution functions appeared in certain mode may be impractical, thus, we have to apply some approximations. Liu [27] proposed the 99method to this end. Together with some search algorithms such as binary search algorithm or genetic algorithm to obtain the optimal value for α, it leads to some Hybrid algorithms [23 , 36].
Remarks 1
The uncertain capacities of the max dynamic flow problem considered here might vary with time, but their corresponding uncertainty distributions be independent of time. Thus, this problem can be transformed to a certain max flow over time model. Therefore, formulation in this case of uncertainty is also straightforward for all of the dynamic network flow problems such as Earliest Arrival Flows, Minimum Cost Flows, MultiCommodity Flows, and so on. For other problems that cannot be formulated in this straightforward manner, more care should be taken in using uncertainty theory. Complicated cases are left as future works.
The Main Algorithm of Solving the UDNFPs
As noted above, when just capacities are uncertain in the UDNFP, the uncertain problem can be transformed to a certain one with the same shape as the original problem. That is, an uncertain problem such as the UMDNFP with uncertain capacities is transformable to a certain problem such as the MDNFP with capacities equal to \(\Phi ^{1}_{e}(\alpha _{e})\)s.
It is stressed again that to transfer an uncertain problem to a certain equivalent one under the circumstances considered here, the uncertain capacities must be replaced with some values carefully. If the higher amounts of flows are desirable, the uncertain capacities can be replaced by \(\Phi ^{1}_{e}(\alpha _{e})\), else if the lower amounts of flows are desirable, then the uncertain capacities can be replaced by \(\Phi ^{1}_{e}(1\alpha _{e})\).
Note that α _{ e },e∈E guarantees the satisfaction of the corresponding constraints. Any value of α _{ e } is determined by the importance of the corresponding constraint. Thus, if all constraints have the same importance, then we set all these values equal to a fixed value α [10].
The algorithm of transforming the UDNFPs to the DNFPs
Given an UDNFP, Step 1 Detect suitable uncertain variables; Step 2 Define the corresponding uncertainty distribution functions; Step 3 Model the main problem by appropriate uncertainty criteria; Step 4 Transform the uncertain model to an equivalent certain model; Step 5 Solve the final model by an appropriate algorithm.
This algorithm implies that to solve UDNFPs considered here, it is sufficient to replace the uncertainty capacities with α _{ e } or 1−α _{ e } appropriately, then deal with the UDNFPs such as certain problems.
Numerical Example
By a simple example presented here, we illustrate the way of dealing with UDNFPs by the proposed algorithm.
Now, suppose that we have obtained the same uncertainty distribution function \(\Phi (x)=\mathcal {Z}(0.5, 1, 2.25)\) for all arc capacities based on the expertise information.
For a given confidence level α=0.9 (determined by the decision maker), we have Φ ^{−1}(0.9)=2.
Conclusion and Future Works
Uncertain dynamic network flow problems have been studied here. The UMDNFP has been formulated and then transformed to a certain MFOTP. It is true that the problems have been studied just in the discrete time mode, but, the problems in the continuous time mode can be solved easily by adopting the results for them according to [13]. Moreover, by using [26 , 27], an algorithm has been presented to solve UDNFPs under some conditions.

Applying this algorithm to real world problems,

Defining appropriate distribution functions for uncertain factors,

Finding efficient algorithms to solve uncertain problems directly (without transforming uncertain models to certain ones), and

Designing some software and providing some libraries for these problems.
Notes
Acknowledgements
The authors would like to express their sincere thanks to the anonymous referees for their worthwhile comments on this paper, which led to an improved version of the original manuscript.
References
 1.Ahuja, RK, Magnanti, TL, Orlin, JB: Network Flows: Theory, Algorithms, and Applications. PrenticeHall, Englewood (1993).MATHGoogle Scholar
 2.Bertsimas, D, et al.: Theory and applications of robust optimization. SIAM Rev. 53(3), 464–501 (2011).MathSciNetCrossRefMATHGoogle Scholar
 3.Chanas, S, Kołodziejczyk, W: Maximum flow in a network with fuzzy arc capacities. Fuzzy Sets Syst. 8(2), 165–173 (1982).MathSciNetCrossRefMATHGoogle Scholar
 4.Chanas, S, Kołodziejczyk, W: Integer flows in network with fuzzy capacity constraints. Networks. 16, 17–31 (1996).MathSciNetCrossRefMATHGoogle Scholar
 5.Chen, X, Liu, B: Existence and uniqueness theorem for uncertain differential equations. Fuzzy Optim. Decis. Making. 9(1), 69–81 (2010).MathSciNetCrossRefMATHGoogle Scholar
 6.Chen, XW, Ralescu, DA: Bspline method of uncertain statistics with applications to estimate travel distance. J. Uncertain Syst. 6(4), 256–262 (2012).Google Scholar
 7.Chen, X, Kar, S, Ralescu, DA: Crossentropy measure of uncertain variables. Inform. Sci. 201, 53–80 (2012).MathSciNetCrossRefMATHGoogle Scholar
 8.Dantzig, GB: Linear programming under uncertainty. Mgmt. Sci. 1(3–4), 197–206 (1955).MathSciNetCrossRefMATHGoogle Scholar
 9.Ding, S: Uncertain minimum cost multicommodity flow problem. Soft Comput. 21(1), 223–231 (2017).CrossRefGoogle Scholar
 10.Ding, S: The αmaximum flow model with uncertain capacities. Appl. Math. Modelling. 39(7), 2056–2063 (2015).MathSciNetCrossRefGoogle Scholar
 11.Fishman, GS: The distribution of maximum flow with applications to multistate reliability systems. Oper. Res. 35(4), 607–618 (1987).CrossRefMATHGoogle Scholar
 12.Fleischer, L, Skutella, M: Quickest flows over time. SIAM J. Comput. 36(6), 1600–1630 (2007).MathSciNetCrossRefMATHGoogle Scholar
 13.Fleischer, L, Tardos, E: Efficient continuoustime dynamic network flow algorithms. Oper. Res. Lett. 23, 71–80 (1998).MathSciNetCrossRefMATHGoogle Scholar
 14.Ford, LR, Fulkerson, DR: Flows in networks. Princeton University Press, Princeton (1962).MATHGoogle Scholar
 15.Gao, Y: Shortest path problem with uncertain arc lengths. Comput. Math. Appl. 62(6), 2591–2600 (2011).MathSciNetCrossRefMATHGoogle Scholar
 16.Gao, Y: Uncertain models for single facility location problems on networks. Appl. Math. Model. 36(6), 2592–2599 (2012).MathSciNetCrossRefMATHGoogle Scholar
 17.Goldberg, AV, Tarjan, RE: A new approach to the maximum flow problem. J. Assoc. Comput. Mach. 35(4), 921–940 (1988).MathSciNetCrossRefMATHGoogle Scholar
 18.Han, S, et al.: The maximum flow problem of uncertain network. Inform. Sci. 265, 167–175 (2014).MathSciNetCrossRefMATHGoogle Scholar
 19.James, JB, Leonard, JJ: Fuzzy maxflow problem. Stud. Fuzz. Soft Comput. 222, 195–198 (2008).CrossRefGoogle Scholar
 20.Ji, X, Yang, L, Shao, Z: Chance constrained maximum flow problem with fuzzy arc capacities. Lect. Notes Artif. Intell. 4114, 11–19 (2006).Google Scholar
 21.Kolmogorov, A: Grundbegriffe der Wahrscheinlichkeitsrechnung (in German). Julius Springer, Berlin (1933).CrossRefGoogle Scholar
 22.Liu, B: Fuzzy process, hybrid process and uncertain process. J. Uncertain Syst. 2(1), 3–16 (2008).Google Scholar
 23.Liu, B: Some research problems in uncertainty theory. J. Uncertain Syst. 3(1), 3–10 (2009).Google Scholar
 24.Liu, B: Theory and practice of uncertain programming. second ed. SpringerVerlag, Berlin (2009).CrossRefGoogle Scholar
 25.Liu, B: Uncertainty theory, 2nd edn. SpringerVerlag, Berlin (2007).Google Scholar
 26.Liu, B: Uncertainty theory, 5th ed. SpringerVerlag, Berlin (2015).Google Scholar
 27.Liu, B: Uncertainty theory: a branch of mathematics for modeling human uncertainty. SpringerVerlag, Berlin (2010).CrossRefGoogle Scholar
 28.Liu, B: Uncertain risk analysis and uncertain reliability analysis. J. Uncertain Syst. 4(3), 163–170 (2010).Google Scholar
 29.Liu, B: Uncertain logic for modeling human language. J. Uncertain Syst. 5(1), 3–20 (2011).Google Scholar
 30.Liu, Y: Uncertain random variables: a mixture of uncertainty and randomness. Soft Comput. 17(4), 625–634 (2013).CrossRefMATHGoogle Scholar
 31.Minoux, M: On robust maximum flow with polyhedral uncertainty sets. Optimization Lett. 3(3), 367–376 (2009).MathSciNetCrossRefMATHGoogle Scholar
 32.Minoux, M: Robust network optimization under polyhedral demand uncertainty is NPhard. Discrete Appl. Math. 158(5), 597–603 (2010).MathSciNetCrossRefMATHGoogle Scholar
 33.Nasrabadi, E: Dynamic flows in timevarying networks, Ph.D. dissertation, Berlin (2009).Google Scholar
 34.Nawathe, SP, Rao, BV: Maximum flow in probabilistic communication networks. Int. J. Circ. Theory Appl. 8, 167–177 (1980).CrossRefGoogle Scholar
 35.Ordonez, F, Zhao, J: Robust capacity expansion of network flows. Networks. 50(2), 136–145 (2007).MathSciNetCrossRefMATHGoogle Scholar
 36.Peng, J, et al.: Towards uncertain network optimization. J. Uncertainty Anal. Appl. 3(4), 3–16 (2015).Google Scholar
 37.Skutella, M: An introduction to network flows over time. In: Cook, W, Lovász, L, Vygen, J (eds.)Research Trends in Combinatorial Optimization, pp. 451–482. Springer, Heidelberg (2009).Google Scholar
 38.Tang, Z, Tang, B: The maximum flow problem with fuzzy constraints. Fuzzy Syst. Math. 15(4), 77–80 (2001).MathSciNetMATHGoogle Scholar
 39.Wang, XS, Gao, ZC, Guo, HY: Uncertain hypothesis testing for two experts’ empirical data. Math. Comput. Model. 55(3–4), 1478–1482 (2012).MathSciNetCrossRefMATHGoogle Scholar
 40.Yao, K: NoArbitrage determinant theorems on meanreverting stock model in uncertain market. Knowl.Based Syst. 35, 259–263 (2012).CrossRefGoogle Scholar
 41.Yao, K, Li, X: Uncertain alternating renewal process and its application. IEEE Trans. Fuzzy Syst. 20(6), 1154–1160 (2012).CrossRefGoogle Scholar
 42.Yao, K, Gao, J, Gao, Y: Some stability theorems of uncertain differential equation. Fuzzy Optim. Decis. Making. 12(1), 3–13 (2013).MathSciNetCrossRefGoogle Scholar
 43.Zadeh, LA: Fuzzy sets. Inform. Control. 8, 338–353 (1965).MathSciNetCrossRefMATHGoogle Scholar
 44.Zhou, J, Yang, F, Wang, K: An inverse shortest path problem on an uncertain graph. J. Netw. 9(9), 23–53 (2014).Google Scholar
Copyright information
Open Access This article is distributed under the terms of the Creative Commons Attribution 4.0 International License (http://creativecommons.org/licenses/by/4.0/), which permits unrestricted use, distribution, and reproduction in any medium, provided you give appropriate credit to the original author(s) and the source, provide a link to the Creative Commons license, and indicate if changes were made.