0707.1100/sea.tex
1: \documentclass[rmp,twocolumn]{revtex4}
2: 
3: \usepackage{graphicx,txfonts}
4: 
5: \begin{document}
6: 
7: \title{Efficiency of navigation in indexed networks}
8: 
9: \author{Petter Holme}
10: \affiliation{Department of Computer Science, University of New Mexico,
11:   Albuquerque, NM 87131, USA}
12: 
13: \begin{abstract}
14:   We investigate efficient methods for packets to navigate in complex
15:   networks. The packets are assumed to have memory, but no previous
16:   knowledge of the graph. We assume the graph to be indexed,
17:   i.e.\ every vertex is associated with a number (accessible to the
18:   packets) between one and the size of the graph. We test different
19:   schemes to assign indices and utilize them  in
20:   packet navigation. Four different network models with very different
21:   topological characteristics are used for
22:   testing the schemes. We find that one scheme outperform the others,
23:   and has an efficiency close to the theoretical optimum. We discuss the use of
24:   indexed-graph navigation in peer-to-peer networking and other
25:   distributed information systems.
26: \end{abstract}
27: 
28: \maketitle
29: 
30: \section{Introduction}
31: 
32: The interplay between network structure and search
33: dynamics has emerged as a busy sub-field of statistical network studies
34: (see e.g.\ Refs.~\cite{klei:nav1,ada:se2,bjk:pfs,sen:sea,zhu:sea}). Consider a simple
35: graph $G=(V,E)$ (where $V$ is a set of $n$ vertices and $E$
36: is a set of $m$ edges---unordered pairs of vertices). Assume information
37: packets travel from a source vertex $s$ to a destination $t$. We assume
38: the packages are myopic agents (at a given timestep they have access to
39: information about the vertices in their neighborhood, but not more),
40: have memory (so they can e.g.\ perform a depth-first search) but no
41: previous knowledge of the network. Let $\tau(p)$ be the
42: time for a packet $p$ to travel between its source and destination. One
43: commonly studied quantity of search efficiency is the expectation value of $\tau$,
44: $\bar\tau$, for randomly chosen $s$ and $t$. In this work we attempt to find efficient ways to index $V$ and utilize these indices for packet navigation.
45: 
46: We propose two schemes of indexing the vertices, and
47: corresponding methods for packet navigation. These schemes, along with two
48: depth-first search methods (not using vertex indices for more than remembering the path) are examined on
49: four network models. We will first present the indexing and search
50: schemes, then the network models for testing the algorithms, and last numerical results.
51: 
52: 
53: \begin{figure}
54:   \centering\includegraphics[width=\linewidth]{ill.eps}
55:   \caption{Illustration of the ASD (panels (a)--(c)) and ASU (panels
56:     (d)--(f)) indexing and search schemes. (a) shows a search tree
57:     where a local search algorithm can find the shortest path from one vertex to another fast. (b) shows a network indexed by the ASD
58:     scheme. The tree used in the construction is identical to the one
59:     shown in (a). Panel (c) shows an ASD search from $s$ to $t$ (with
60:     $\tau=4$). On the way from $t$ to $r$ the packet chooses the
61:     neighbor (of the current vertex) with lowest index, which here
62:     gives a longer route than the optimal $\{(9,10),(10,1)\}$. (d)
63:     shows a possible partition of branches of non-root vertices into
64:     classes of as similar size as possible (as done in the ASU indexing
65:     scheme). (e) shows a possible indexing based on the partition in
66:     (d). Panel (f) displays a search from $s$ to $t$ with
67:     $\tau=6$. The shortest path from $t$ to $r$ is accurately found,
68:     but a detour to $6$ makes the search from $r$ to $t$ sub-optimal.
69:   }
70: \label{fig:ill}
71: \end{figure}
72: 
73: \section{Indexing and search schemes}
74: 
75: Now we turn to the schemes for assigning indices to the vertices and
76: using them in search processes. Our two main schemes are both inspired
77: by search trees. Packets first 
78: moves towards a root vertex $r$, then towards the destination. Unless
79: the network really is a tree, this approach cannot be exact---a packet
80: is not guaranteed to find the shortest way both from $s$ 
81: to $r$ and from $r$ to $t$). However, as we will see, one can assign indices
82: such that the search either from $s$ to $r$, or from $r$ to $t$ is
83: certain to be as short as possible. One of our schemes, ASD (accurate
84: search up),  will be such that the shortest upward search is
85: guaranteed, the other, ASD (accurate search down), will have the
86: shortest possible $r$ to $t$ search.
87: 
88: On a technical note, $V$ is
89: a set of distinct elements and an indexing scheme is a
90: bijection $\phi:V\mapsto [1,n]$. In the remainder of the text we
91: will not explicitly distinguish $i\in V$ from $\phi(i)$.
92: 
93: \subsection{The ASD indexing and search}
94: 
95: The numbers $1,\cdots,n$ can be arranged into a search
96: tree~\cite{algorithms} such that the expected value of $\tau$ scales
97: like $\log n$. In Fig.~\ref{fig:ill}(a) we give an example of a search
98: tree. To go from source $s$ to destination $t$ a packet first moves to
99: the root $r$ by going to the neighbor with lowest index value. From the
100: root to the destination, the package moves to the neighbor with the
101: largest index smaller than, or equal to, $t$. Our strategy for the
102: ASD indexing and search scheme is to construct a spanning
103: tree $T(G)$ for the network; index the tree to make it a search tree; and use
104: the algorithm above to navigate from $s$ to $t$. The problem is,
105: however that real networks are not trees. Imagine adding edges between
106: vertices of the same heights and branches to the tree in
107: Fig.~\ref{fig:ill}(a)---the tree will still be a spanning tree, but
108: the packets may not take the same path from $s$ to $t$ any
109: more. As we will see, with certain ways of constructing the tree and
110: indexing the vertices the search, either from $s$ to $r$ or $r$ to $t$
111: will be optimal.
112: 
113: We construct $T(G)$ in the following way:
114: \begin{enumerate}
115: \item Let the root $r$ be a vertex of smallest eccentricity (maximal
116:   distance to an other vertex).
117: \item Construct the tree such that the distances to the root is the
118:   same in $T(G)$ and $G$. In other words, such that all edges in $T$ go between
119:   different neighborhoods $\Gamma_l(r)=\{i\in V: d(i,r)=l$ and
120:   $\Gamma_{l+1}(r)\}$ for some level $0\leq l\leq h$, where $h$ is the
121:   \textit{height} of the tree (by the choice of $r$, $h$ is also the
122:   radius of the graph). Such a tree can be constructed by finding the set of followed edges in a breadth-first
123:   search~\cite{algorithms} starting from $r$.
124: \end{enumerate}
125: When it is not clear which vertex, or edge, to choose in the above
126: construction, we choose one at random from all the possible candidates.
127: When $T$ is constructed, let the indices be a preordering of the vertices in $T$ (i.e.\ the
128: order of first-occurrence of the vertex in a depth-first search of the
129: graph)~\cite{algorithms}.
130: 
131: Now we prove that this indexing and search algorithm always gives the
132: shortest paths from the root to a vertex $t$.
133: Let $E_T$ be the edges of $T$ and let $T_i$ be the maximal
134: subtree with $i$ as root. By construction, all vertices in $T_i$ have
135: indices in $[i,i+|T_i|]$ (where $|\;\cdot\;|$ denotes the cardinality
136: of a subgraph). Let $i'$ be the largest index in $i$'s neighborhood
137: smaller than $t$. Assume there is an edge $(i,j)\in E\setminus E_T$
138: that the search will follow, i.e.\ that $i'<j<t$. This means that
139: $j\in T_{i'}$. By construction, $i'$ is the only vertex in $T_{i'}$ at
140: a distance $d(r,i')$ (the distance from the rest of $T_{i'}$ to the root is at least
141: $d(r,i')+1$). Since $d(r,i') = d(r,i)+1$, we have $d(r,j)\geq d(r,i)+2$
142: which contradicts the existence of an edge $(i,j)\in E$. Thus searches
143: from $r$ to $t$ will always follow the edges of $T$, which also means
144: the $r$--$t$-searches will be as short as possible.
145: 
146: Searching upwards, from $i$ to $r$, in a graph indexed as above is
147: harder. We know that one shortest path goes via a vertex $j$ with
148: smaller index than $i$, but there might sub-optimal paths via 
149: indices $i'$ in the intervals $r<i'<j$ and $j<i'<i$, and there
150: might also be paths via vertices of index larger than $j$, that is optimal.
151: For example, assume the search tree in Fig.~\ref{fig:ill}(a)
152: comes from a graph with the additional edges $(5,9)$, $(8,9)$ and
153: $(9,10)$ (see Fig.~\ref{fig:ill}(b)). Then, the shortest path from $9$ to $r$ via a vertex of
154: lower index is $\{(9,7),(7,1)\}$, but there is an equally long path
155: via a vertex of larger index, $\{(9,10),(10,1)\}$, and longer paths
156: via vertices both smaller and larger than $7$ but smaller
157: than $9$. There thus no general way of finding the shortest way from
158: $s$ to $r$. Instead, we always choose the vertex with the smallest
159: index in the neighborhood. By this strategy a packet will come closer to $r$, in
160: index space, for every step. Furthermore, in tree-like parts of the
161: graph, the search will follow the shortest paths. An illustration of
162: the ASD search can be found in Fig.~\ref{fig:ill}(c).
163: 
164: 
165: \subsection{The ASU indexing and search}
166: 
167: Consider a tree $T(G)$ constructed as in the previous section and an
168: indexing such that $d(i,r) < d(j,r)$ implies $i<j$ (i.e., all indices
169: of a level further from the root is larger than in levels closer to
170: $r$). With such an indexing, since the neighbor of a vertex with the
171: smallest index necessarily is one step closer to the root, a packet
172: can always find one shortest way too the root. But once the package is
173: at the root the indices is not of so much help. The search from $r$ to
174: $t$ has to be, essentially, a depth-first search. There are, however,
175: a few tricks to speed up the search. First, there is no need to
176: search deeper than $t$---if $j>t$, then $t\notin T_j$. Second, one can
177: choose the indices $i,\cdots,i+|\Gamma_l(r)|$ of one level in the tree
178: in a way to narrow down the search. For example, one can divide the
179: vertices into $\nu$ classes (defined by e.g.\ the remainder when the
180: index is divided by $\nu$) and index vertices of connected regions of
181: the graph with indices of the same class. The search can then be
182: restricted to the same class as the destination. We will pursue this idea
183: with $\nu=2$.
184: 
185: To derive the ASU indexing scheme, the first goal is to divide the vertices into classes of
186: connected subgraphs. Furthermore, we require all classes to be connected to the root vertex. Another aim is to make the classes of as similar sizes as
187: possible. Our first step is to make $k_r$ (the degree, or number of
188: neighbors, of $r$) parallel depth-first searches\footnote{Every
189:   iteration, one step is taken in all branches. The different search branches marks the
190:   visited vertices with their indices. A search proceeds only to
191:   vertices not marked by any search. When there are no unmarked vertices, the search branch is finished.}. Second we group the
192: $k_r$ search trees into $\nu$ groups with maximally similar sizes. In our case, we seek a partition of the search trees into
193: two classes such that the sums of vertices in the respective classes
194: are as close as possible.\footnote{We do this by randomly exchanging
195:   search trees between the two classes and accept changes that improve
196:   the partition. The search is continued until their vertex-sums differ
197:   by at most one, or the partition has not improved for 1000
198:   trials.} Then we go through the levels, starting from the root,
199: and assign numbers such that vertices of one partition have even
200: indices, while the other has odd numbers (this assignment might not
201: always work). To avoid systematic errors we sample the elements of
202: levels randomly. This construction scheme is illustrated in
203: Fig.~\ref{fig:ill}(d) and (e).
204: 
205: 
206: \subsection{Degree-based and random search}
207: 
208: As a reference, we also run simulations for two depth-first search
209: methods that do not utilize indices~\cite{ada:se2}. One of them,
210: \textsc{Rnd}, is regular depth-first search where the neighbors are
211: traversed in random order. In the other, \textsc{Deg}, the neighbors
212: are chosen in order from high to low degree. Just like for ASU and ASD
213: methods, a packet is assumed to have knowledge about its neighborhood---if the
214: destination is in the neighborhood of a vertex, then the search will be
215: over the next time step.
216: 
217: 
218: \section{Network models}
219: 
220: The efficiency of our indexing and search schemes are more or
221: less directly affected by the network structure. To investigate this relationship
222: we test the search schemes on four different types of network models:
223: modified Erd\H{o}s--R\'enyi (ER) graphs~\cite{er:on}, square lattices,
224: Barab\'asi--Albert (BA)~\cite{ba:model} and Holme--Kim
225: (HK)~\cite{hk:model} networks. To facilitate comparison, we have the same
226: average degree, four (dictated by the square grid), in all networks.
227: 
228: \subsection{Modified ER graphs}
229: 
230: The ER model is the simplest model for randomly generating simple
231: graphs with $n$ vertices and $m$ edges. The edges are added one by one
232: to randomly chosen vertex pairs (the only restriction being that
233: loops or multiple edges are not allowed). A problem for our purpose is
234: that ER graphs are not necessarily connected (something required to measure $\bar\tau$). To remedy this we propose a scheme to
235: make networks connected.
236: \begin{enumerate}
237: \item \label{step:components} Detect the connected components.
238: \item \label{step:seq} Go through the connected components sequentially. Denote
239:   the current component $C_I$.
240: \begin{enumerate}
241: \item \label{step:random_component} Pick a component $C_J$ randomly.
242: \item Pick a random edge $(i,j)$ whose removal would not fragment
243:   $C_J$. If no such edge exist, go to step~\ref{step:seq}.
244: \item \label{step:rnd_vertex} Pick a random vertex $i'$ of $C_I$.
245: \item \label{step:repl} Replace $(i,j)$ by $(i',j)$. If the edge
246:   $(i',j)$ would exist already (an unlikely event), go to
247:   step~\ref{step:repl}. If there is no vertex $i'\in C_I$ such that
248:   $(i',j)$ does not already exist, then go to~\ref{step:seq}.
249: \end{enumerate}
250: \item If the network is disconnected still, go to step~\ref{step:components}.
251: \end{enumerate}
252: In practice, even for our largest system sizes, the above algorithm
253: converges in a few iterations. The number of edges needed to be added
254: never exceed a few percent of $m$, and this addition is made with greatest possible
255: randomness; hence we believe the essential network structure of the ER
256: model is conserved.
257: 
258: \subsection{Square lattice}
259: 
260: We use square lattices with periodic boundary conditions. $n$ vertices
261: spread out regularly on a $L\times L$-grid such that the vertex with
262: coordinates $(x,y)$, $1\leq x,y\leq L$, is connected to $(x,y+1)$,
263: $(x+1,y)$, $(x,y-1)$, $(x-1,y)$ (if $x=1$, we formally let $x-1=L$, if
264: $x=L$ we let $x+1$ represent $1$; and correspondingly for $y$).
265: 
266: \subsection{BA model}
267: 
268: The popular BA model~\cite{ba:model} of networks with a power-law degree distribution
269: works as follows (with our parameter settings). Start with one vertex
270: connected to two degree-one vertices. Iteratively add vertices
271: connected to two other vertices. Let the probability of connecting the new vertex to
272: a vertex $i$ already present in the network is proportional to $k_i$
273: (so called \textit{preferential attachment}).
274: 
275: \subsection{HK model}
276: 
277: The HK model~\cite{hk:model} is a modification of the BA model to give the network
278: higher number of triangles. When edges are added from the new vertex
279: to already present vertices, the first edge is added by preferential attachment. The second edge is added to one of $i$'s neighbors, forming a triangle.
280: 
281: \begin{figure}
282:   \centering
283:   \includegraphics[width=0.92\linewidth]{sca.eps}
284:   \caption{The average search time $\bar\tau$ as a function of the
285:     graph sizes $n$. In all panels, we display data for the
286:     different indexing and search schemes. The shaded areas are
287:     unreachable (corresponding to $\bar\tau$ values smaller than the theoretical minimum---the average distance $\bar{d}$). The different panels correspond to the modified ER
288:     model, square grid, BA model and HK model networks
289:     respectively. Error bars would have been smaller than the symbol
290:     sizes.
291:   }
292: \label{fig:sca}
293: \end{figure}
294: 
295: \section{Numerical results}
296: 
297: We study the search schemes on the four
298: different network topologies numerically. We use $100$ independent
299: networks and $100$ different $s$--$t$-pairs for every network. The
300: network sizes range from $n=16$ to $n=16{,}384$.
301: 
302: \begin{figure}
303:   \centering
304:   \includegraphics[width=0.8\linewidth]{wcs.eps}
305:   \caption{A worst case scenario for navigating from $s$ to $r$ with
306:     the ASD indexing and search scheme. A packet from $n-2$ to $1$ will
307:     travel along the perimeter to $3$ and then move towards the
308:     center.
309:   }
310: \label{fig:wcs}
311: \end{figure}
312: 
313: In Fig.~\ref{fig:sca} we display the average search times
314: as a function of system size for our simulations. The most conspicuous
315: feature is that the ASD scheme is always, by far, the most efficient.
316: While ASU and \textsc{Deg} are close to the least efficient
317: method (\textsc{Rnd}), ASD is rather close to the theoretical limit
318: (equal to the average distances $\bar\tau$---the upper border of the shaded
319: areas in Fig.~\ref{fig:sca}). To be more precise, $\bar\tau$ is quite
320: constant, about two times larger than the average distance. The other
321: search schemes (ASU, \textsc{Deg} and \textsc{Rnd}) follow faster
322: increasing functional forms. For the square lattice, these three schemes
323: increase, approximately proportional to $n$ (the analytical value
324: for two-dimensional random walks) whereas for ASD, $\bar\tau$ scale
325: like distances in square grids, $n^{1/2}$. One way of interpreting this result is that while ASD
326: manages to find the root as fast as it finds the destination from the root,
327: ASU fails to find $t$ faster than a random search. The slow
328: downward performance of ASU is not unexpected---the $r$--$t$-search in
329: ASU only differs from a random
330: depth-first search in that it does not search further than the level
331: of the destination, and that it restricts the search-space to half its original
332: size by dividing the vertices into odd and even indices. The fast
333: upward search of ASD is more surprising. In Fig.~\ref{fig:wcs} we show
334: a network where ASD performs badly. The average time to search upwards
335: is $(n^2+20n-13)/8n\rightarrow n/8$ as $n\rightarrow\infty$. The
336: downward search takes $3(n-1)/2n \sim 3/2$ giving a total expected
337: value of $\bar\tau \sim n/8$. This can be compared to
338: the average distance $\bar{d}=3-21/4n+2/n^2 \sim 3$. For this example,
339: $\bar\tau$ and $\bar{d}$ diverge in a way not seen in the network
340: models. Why is the search so much faster in the model networks? One
341: point is that the worst-case indexing seen in Fig.~\ref{fig:wcs} is
342: very unlikely. Since the spokes would be sampled randomly, the chance that a
343: vertex at the perimeter not finds $r$ in two steps is $1/2$, the
344: probability of a perimeter vertex to find $r$ in $3$ steps is
345: $1/4$, and so on. Carrying on this calculation, a vertex at the
346: perimeter reaches $r$ in $2\sum_k k 2^{k}+2\sim 6$ timesteps giving
347: $\bar\tau\sim 5$---not too far from the observed $\bar\tau/\bar{d}\sim 2$. We note however that for the model
348: networks many other factors that are not present in
349: the wheel-graph of Fig.~\ref{fig:wcs} affect $\bar{\tau}$. For example, the high density
350: of short triangles in the HK model networks will introduce many edges
351: between vertices of the same level in $T(G)$ which will affect the
352: search efficiency.
353: 
354: $\bar\tau$ is approximately linear for the ASU, \textsc{Deg} and
355: \textsc{Rnd} on all network models. The slopes of these curves are, however, a little different. First, the \textsc{Deg} method is more efficient (compared to
356: ASU and \textsc{Rnd}) for BA networks, than for the modified ER model. This
357: observation (also made in Ref.~\cite{ada:se2}) can be explained by the
358: skewed degree distribution in the BA-network---the packet reaches
359: high-degree vertices fast. The packet can see a
360: large part of the network from these hubs, and is therefore more likely to see $t$. More interesting, perhaps, is that ASU is more efficient
361: for the networks with a higher density of short cycles (the square
362: lattice and HK models). A rough explanation is that the partition
363: procedure of ASU cuts off many edges between vertices at the same distance
364: from $r$. Since there are many such edges in these network models, the network will effectively be sparser
365: (without changing $G$'s diameter), which results in a better
366: performance.
367: 
368: 
369: \section{Discussion}
370: 
371: We have investigated navigation in valued graphs, more specifically
372: in indexed graphs---graphs where every vertex is associated with a
373: unique number in the interval $[1,n]$. These indices can be assigned
374: to facilitate the packet navigation. The packets are assumed
375: to have no \textit{a priori} knowledge about the network, except the neighborhoods of their current positions, but memory
376: enough to perform a depth-first search. We find that one of our
377: investigated methods, ASD, is very efficient for four topologically
378: very different network models. The searches with the ASD scheme are
379: roughly twice as long as the shortest paths (scaling in the same way as the average distance).
380: 
381: Navigation on indexed graphs has applications in distributed
382: information systems. If, specifically, the amount of information that can be
383: stored at the vertices were limited, search strategies such as ours
384: would be useful. One such system is the Autonomous System level Internet where the information stored at each vertex (with the current protocols) increase at least as fast as the networks themselves. For most real-world applications (other examples being \textit{ad hoc}
385: networks\cite{adhoc} or peer-to-peer networks~\cite{sarshar,niloy,mejngg:p2p}) there are additional
386: constraints so that the algorithms of this paper cannot immediately be
387: applied. Such networks are typically changing over time, so the
388: indexing should ideally be possible to be extended on the fly as vertices
389: and edges are added and deleted from the network. Apart from this, a
390: future direction for research on indexed graphs is to improve the
391: performance of the algorithms presented in this work. There might be
392: search-tree based algorithm that neither finds the shortest path to
393: the root, nor finds the shortest way to the destination. For some
394: network topologies there might be faster algorithms that are not based
395: on constructing a spanning tree. Consider, for example, modular
396: networks~\cite{mejn:commu} (i.e.\ networks with tightly connected
397: subgraphs that are only sparsely interconnected) in such networks the
398: search can be divided into two stages---first find the cluster of the
399: destination, then the destination. These two stages should be
400: reflected in a fast navigation algorithm.
401: 
402: \acknowledgments{
403:   PH acknowledges financial support from the Wenner-Gren
404:   Foundations and the National Science Foundation (grant
405:   CCR--0331580).
406: }
407: 
408: \begin{thebibliography}{10}
409: 
410: \bibitem{ada:se2}
411: L.~A. Adamic, R.~M. Lukose, A.~R. Puniyani, and B.~A. Huberman.
412: \newblock Search in power-law networks.
413: \newblock {\em Phys. Rev. E}, 64:046135, 2001.
414: 
415: \bibitem{ba:model}
416: A.-L. Barab\'{a}si and R.~Albert.
417: \newblock Emergence of scaling in random networks.
418: \newblock {\em Science}, 286:509--512, 1999.
419: 
420: \bibitem{algorithms}
421: T.~H. Cormen, C.~E. Leiserson, R.~L. Rivest, and C.~Stein.
422: \newblock {\em Introduction to Algorithms}.
423: \newblock The MIT Press, Cambridge MA, 2nd edition, 2001.
424: 
425: \bibitem{adhoc}
426: C.~{de Morais Cordeiro} and D.~P. Agrawal.
427: \newblock {\em Ad Hoc \& Sensor Networks: Theory and Applications}.
428: \newblock World Scientific, Hackensack, NJ, 2006.
429: 
430: \bibitem{er:on}
431: P.~Erd\H{o}s and A.~R\'{e}nyi.
432: \newblock On random graphs {I}.
433: \newblock {\em Publ. Math. Debrecen}, 6:290--297, 1959.
434: 
435: \bibitem{niloy}
436: N.~Ganguly, L.~Brusch, and A.~Deutsch.
437: \newblock Design and analysis of a bio-inspired search algorithm for peer to
438:   peer networks.
439: \newblock In O.~Babaoglu, M.~Jelasity, A.~Montresor, C.~Fetzer, and
440:   S.~Leonardi, editors, {\em Self-star Properties in Complex Information
441:   Systems}, pages 358--372, New York, 2007. Springer-Verlag.
442: 
443: \bibitem{mejngg:p2p}
444: G.~Ghoshal and M.~E.~J. Newman.
445: \newblock Growing distributed networks with arbitrary degree distributions.
446: \newblock e-print physics/0608057.
447: 
448: \bibitem{hk:model}
449: P.~Holme and B.~J. Kim.
450: \newblock Growing scale-free networks with tunable clustering.
451: \newblock {\em Phys. Rev. E}, 65:026107, 2002.
452: 
453: \bibitem{bjk:pfs}
454: B.~J. Kim, C.~N. Yoon, S.~K. Han, and H.~Jeong.
455: \newblock Path finding strategies in scale-free networks.
456: \newblock {\em Phys. Rev. E}, 65:027103, 2002.
457: 
458: \bibitem{klei:nav1}
459: J.~M. Kleinberg.
460: \newblock Navigation in a small world.
461: \newblock {\em Nature}, 406:845, 2000.
462: 
463: \bibitem{mejn:commu}
464: M.~E.~J. Newman and M.~Girvan.
465: \newblock Finding and evaluating community structure in networks.
466: \newblock {\em Phys. Rev. E}, 69:026113, 2004.
467: 
468: \bibitem{sarshar}
469: N.~Sarshar, P.~O. Boykin, and V.~P. Roychowdhury.
470: \newblock Percolation search in power law networks: Making unstructured
471:   peer-to-peer networks scalable.
472: \newblock In {\em Proceedings of Fourth International Conference on
473:   Peer-to-Peer Computing}, pages 2--9. IEEE, 2004.
474: 
475: \bibitem{sen:sea}
476: P.~Sen.
477: \newblock A novel approach for studying realistic navigations on networks.
478: \newblock {\em J. Stat. Mech.}, P04007, 2007.
479: 
480: \bibitem{zhu:sea}
481: H.~Zhu and Z.-X. Huang.
482: \newblock Navigation in a small world with local information.
483: \newblock {\em Phys. Rev. E}, 70:036117, 2004.
484: 
485: \end{thebibliography}
486: 
487: 
488: 
489: \end{document}
490: 
491: 
492: