0% found this document useful (0 votes)
22 views50 pages

L3-Network Algorithms 2017

The document discusses L3-Network Algorithms used in Geographical Information Systems, covering topics such as general network issues, shortest path algorithms including Dijkstra's algorithm, and traversal methods like breadth-first and depth-first. It emphasizes the importance of nodes and edges in networks, the storage of network data, and the computational complexity of various algorithms. Additionally, it includes examples and explanations of how to implement these algorithms effectively.

Uploaded by

Hatice Gülseren
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
22 views50 pages

L3-Network Algorithms 2017

The document discusses L3-Network Algorithms used in Geographical Information Systems, covering topics such as general network issues, shortest path algorithms including Dijkstra's algorithm, and traversal methods like breadth-first and depth-first. It emphasizes the importance of nodes and edges in networks, the storage of network data, and the computational complexity of various algorithms. Additionally, it includes examples and explanations of how to implement these algorithms effectively.

Uploaded by

Hatice Gülseren
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd

L3-Network Algorithms

L3 – Network Algorithms

NGEN06(TEK230) –
Algorithms in Geographical Information Systems

by: Irene Rangel, updated Nov. 2015 by Abdulghani Hasan,


Nov 2017 by Per-Ola Olsson
L3-Network Algorithms

Content

1. General issues of networks


2. Shortest path - Dijkstra’s algorithm
3. Other shortest path algorithms
4. Neighbourhood graphs and clustering
5. Traveling salesman problem.
L3-Network Algorithms

Networks in GIS
By using the distances between nodes in a
network we can e.g. derive the shortest path,
minimum number of nodes to pass and study
accessibility.
L3-Network Algorithms

What is a network
• A network or graph has 2 main constitutes:
– Nodes
– Edges

Edges give distances between nodes. Distances can e.g. be:


- Euclidean distances
- Travelling time
The network can e.g. be:
- street network
- airplane routes
L3-Network Algorithms

What is a network
• A network or graph has 2 main constitutes:
– Nodes
– Edges

Many analysis in networks only consider the nodes and


the edges.

Geometric location of the nodes is uninteresting


L3-Network Algorithms

General issues of networks


Networks can be stored in matrixes.
Not a good data storage, especially for sparse
networks, since it requires a lot of memory.
But a matrix gives fast access to the nodes; O(1)
to access a single node. For example fast to
check if two nodes are connected.
In most cases relational databases or lists and
trees are more suitable storage structures.

A B C D

A 0 2 1 -
B 2 0 3 2
C 1 3 0 4
D - 2 4 0
”-” implies that the nodes are not connected by any edge
L3-Network Algorithms

Graphic Adjacency matrix Adjacency list


Representation representation representation
(easy for humans
To read)

Source: Worboys and Duckham 2004


L3-Network Algorithms

Sparse network with


several zeros stored

Graphic Adjacency matrix Adjacency list


representation representation representation

Source: Worboys and Duckham 2004


L3-Network Algorithms

a connected to: b, distance 20 and


g, distance 15

Graphic Adjacency matrix Adjacency list


representation representation representation

Source: Worboys and Duckham 2004


L3-Network Algorithms

Compare to matrix with one row

h connected to c,
distance 10

Graphic Adjacency matrix Adjacency list


representation representation representation

Source: Worboys and Duckham 2004


L3-Network Algorithms

Shortest path

• The path between two nodes that is shorter than


all other possible paths.

• In the shortest path problem we are not only


restricted to Euclidean distances, but all the kind
of distances are of interest.
L3-Network Algorithms

Shortest path

Navigation
Start point  target point
(distance c -> a is 28)

Accessibility
Many points target point
L3-Network Algorithms

Shortest path

Navigation
Start point  target point

Accessibility
Many points target point
(access e from four points - c,d,f,g)
L3-Network Algorithms

Shortest path

Accessibility to parks
and nature in Gothenburg
(Viktor Svanerud, master thesis)
L3-Network Algorithms

Dijkstra’s algorithm
- one of the most well-known shortest path algorithms.

• Example of finding the shortest path between Node A


and Node D.
• We need 2 matrixes:
– Adjacency matrix (static)
– State matrix (dynamic)

A B C D

A 0 2 1 -
We recognise the
B 2 0 3 2 adjacency matrix from
C 1 3 0 4
D - 2 4 0
above
L3-Network Algorithms

Dijkstra’s algorithm
• Example of finding the shortest path between Node A
and Node D.
• We need 2 matrixes:
– Adjacency matrix (static)
– State matrix (dynamic)
Node Distance Path Visited
A 0 - Yes
B 2 A No
C 1 A No
D  - No
Distance a -> b is 2

The state matrix is dynamic and changes when a node is “visited”.


L3-Network Algorithms

Dijkstra’s algorithm
State matrix:
– Node is the ID of the nodes.
– Distance keeps track of the current shortest distance from the
starting node to this node.
– Path stores the previous node along the shortest path (found so
far) to this node.
– Visited states if the node has been visited in the computations of
the shortest path (explained later).

Node Distance Path Visited

A 0 - Yes

B 2 A No

C 1 A No

D  - No
Start point is A
L3-Network Algorithms

Dijkstra’s algorithm
First initialize the state matrix:
– The start node is marked as visited.
– All nodes that can be reached from the start are updated in the columns distance
and path based on Adjacency matrix (row-wise).
• Distance values are set to the distances between the start node and the respective
node (derived from the adjacency matrix).
• Path values are set to the start node (the starting node is the current shortest path
to this particular node)
– If there is no path to a node, the distance is set to infinity and the path value is
undefined.

Node Distance Path Visited

A 0 - Yes

B 2 A No

C 1 A No

D  - No

The state matrix is initialized for start point A


L3-Network Algorithms

Dijkstra’s algorithm
After the state matrix is initialized:

1. Find the node with the shortest distance that is not yet visited. Denote this as
the current node.

2. Mark the current node as visited.

3. For each node (m) that is not yet visited do:


If the node m and the current node has a common edge
AND
if the sum of the distance from the start node to the current node and the
distance from the current node to the node m (found in the adjacency
matrix) is shorter than the current distance from the starting node to node
m (stored in the state matrix)
DO State matrix
update the distance and the path for node m.

4. Proceed from (1) again until the end node is visited.


L3-Network Algorithms

1. Find the node with the shortest distance that is not yet visited. Denote this as
the current node.

2. Mark the current node as visited.

3. For each node (m) that is not yet visited do:


If the node m and the current node has a common edge
AND
if the sum of the distance from the start node to the current node and the
distance from the current node to the node m (found in the adjacency
matrix) is shorter than the current distance from the starting node to node
m (stored in the state matrix)
DO
update the distance and the path for node m.

4. Proceed from (1) again until the end node is visited. Adjacency matrix
A B C D

Adjacency matrix: A 0 2 1 -
If nodes have a common edge and B 2 0 3 2
for distances between current node
and node m C 1 3 0 4

D - 2 4 0
L3-Network Algorithms

Result of the shortest path algorithm


• Distance from start to end node (Distance)
• Path?

Node Distance Path Visited

A 0 - Yes

B 2 A Yes

C 1 A Yes

D 4 B Yes
L3-Network Algorithms

Result of the shortest path algorithm


• Distance from start to end node (Distance)
• Path from end backwards to start.

Node Distance Path Visited

A 0 - Yes

B 2 A Yes

C 1 A Yes

D 4 B Yes
L3-Network Algorithms

Does Dijkstra’s algorithm always give a


correct answer?
Yes, no heuristics are involved BUT all types of
distances are not allowed.

Conditions for a metric:


1. d(p,q)>=0, d(p,q)=0  p=q
2. d(p,q)=d(q,p) (symmetry)
3. d(p,q)<=d(p,r)+d(r,q) (triangle inequality)

Preparation for the network algorithm exercise.


L3-Network Algorithms

What’s the computational complexity of


Dijkstra’s algorithm?
1. Find the node with the shortest distance and that is not yet visited.

2. Mark the current node as visited.

For each node (m) that is not yet visited do:

……………………………

4. Proceed from (1) again until the end node is visited.


L3-Network Algorithms

Breadth-first traversal

Q is a queu – property is first-in-first-out

b is the
Source: Worboys and Duckham 2004
starting point

1. Start point b
2. Add nodes connected to b to Q and b to V
3. Add a (first in Q) to visited and add nodes connected to a LAST in Q.
4. Add c (first in Q) to visited and add nodes connected to c LAST in Q.
5. Add d (first in Q) to visited and add nodes connected to d LAST in Q.
6. ...
L3-Network Algorithms

Breadth-first traversal

Q is a queu – property is first-in-first-out

b is the
Source: Worboys and Duckham 2004
starting point

1. Start point b
2. Add nodes connected to b to Q and b to V
3. Add a (first in Q) to visited and add nodes connected to a LAST in Q.
4. Add c (first in Q) to visited and add nodes connected to c LAST in Q.
5. Add d (first in Q) to visited and add nodes connected to d LAST in Q.
6. ...
L3-Network Algorithms

Breadth-first traversal

Q is a queu – property is first-in-first-out

b is the
Source: Worboys and Duckham 2004
starting point

1. Start point b
2. Add nodes connected to b to Q and b to V
3. Add a (first in Q) to visited and add nodes connected to a LAST in Q.
4. Add c (first in Q) to visited and add nodes connected to c LAST in Q.
5. Add d (first in Q) to visited and add nodes connected to d LAST in Q.
6. ...
L3-Network Algorithms

Breadth-first traversal

Q is a queu – property is first-in-first-out

b is the
Source: Worboys and Duckham 2004
starting point

1. Start point b
2. Add nodes connected to b to Q and b to V
3. Add a (first in Q) to visited and add nodes connected to a LAST in Q.
4. Add c (first in Q) to visited and add nodes connected to c LAST in Q.
5. Add d (first in Q) to visited. No “new” nodes connected to d.
6. ...
L3-Network Algorithms

Breadth-first traversal

Q is a queu – property is first-in-first-out

b is the
Source: Worboys and Duckham 2004
starting point

3. …
4. Add c (first in Q) to visited and add nodes connected to c LAST in Q.
5. Add d (first in Q) to visited. No “new” nodes connected to d.
6. Add g (first in Q) to visited. No “new” nodes connected to g.
L3-Network Algorithms

Breadth-first traversal

Q is a queu – property is first-in-first-out

b is the
Source: Worboys and Duckham 2004
starting point

3. …
4. Add c (first in Q) to visited and add nodes connected to c LAST in Q.
5. Add d (first in Q) to visited. No “new” nodes connected to d.
6. Add g (first in Q) to visited. No “new” nodes connected to g.
7. Add e (first in Q) to visited and add nodes connected to e LAST in Q.
8. …
L3-Network Algorithms

Depth-first traversal

Q is a stack – property is last-in-first-out

b is the
Source: Worboys and Duckham 2004
starting point

1. Start point b
2. Add nodes connected to b to Q and add b to V
3. Add a (first in Q) to visited and add nodes connected to a FIRST in Q.
4. Add c (first in Q) to visited and add nodes connected to c FIRST in Q.
5. Add d (first in Q) to visited and add nodes connected to d FIRST in Q.
6. ...
L3-Network Algorithms

Depth-first traversal

Now g is
added FIRST

Q is a stack – property is last-in-first-out

b is the
Source: Worboys and Duckham 2004
starting point

1. Start point b
2. Add nodes connected to b to Q and add b to V
3. Add a (first in Q) to visited and add nodes connected to a FIRST in Q.
4. Add c (first in Q) to visited and add nodes connected to c FIRST in Q.
5. Add d (first in Q) to visited and add nodes connected to d FIRST in Q.
6. ...
L3-Network Algorithms

Depth-first traversal

Now we follow the


path a -> g “deeper”
and add e FIRST in Q

Q is a stack – property is last-in-first-out

b is the
Source: Worboys and Duckham 2004
starting point

1. Start point b
2. Add nodes connected to b to Q and add b to V
3. Add a (first in Q) to visited and add nodes connected to a FIRST in Q.
4. Add g (first in Q) to visited and add nodes connected to g FIRST in Q.
5. Add d (first in Q) to visited and add nodes connected to d FIRST in Q.
6. ...
L3-Network Algorithms

Depth-first traversal

Q is a stack – property is last-in-first-out

b is the
Source: Worboys and Duckham 2004
starting point

1. Start point b
2. Add nodes connected to b to Q and add b to V
3. Add a (first in Q) to visited and add nodes connected to a FIRST in Q.
4. Add g (first in Q) to visited and add nodes connected to g FIRST in Q.
5. Add e (first in Q) to visited and add nodes connected to e FIRST in Q.
6. ...
L3-Network Algorithms

Depth-first traversal

Q is a stack – property is last-in-first-out

b is the
Source: Worboys and Duckham 2004
starting point

1. Start point b
2. Add nodes connected to b to Q and add b to V
3. Add a (first in Q) to visited and add nodes connected to a FIRST in Q.
4. Add g (first in Q) to visited and add nodes connected to g FIRST in Q.
5. Add e (first in Q) to visited and add nodes connected to e FIRST in Q.
6. Add f (first in Q) to visited. No “new” nodes connected to f.
L3-Network Algorithms

Depth-first traversal

Q is a stack – property is last-in-first-out

b is the
Source: Worboys and Duckham 2004
starting point

1. Start point b
2. Add nodes connected to b to Q and add b to V
3. Add a (first in Q) to visited and add nodes connected to a FIRST in Q.
4. Add g (first in Q) to visited and add nodes connected to g FIRST in Q.
5. Add e (first in Q) to visited and add nodes connected to e FIRST in Q.
6. Add f (first in Q) to visited. No “new” nodes connected to f.
7. Add c (first in Q) to visited and add nodes connected to c FIRST in Q.
L3-Network Algorithms

Breadth-first, depth-first traversal


L3-Network Algorithms

Dijkstra’s algorithm

Breadth-first or
Depth-first algorithm?
L3-Network Algorithms

Dijkstra’s algorithm - breadth first algorithm

Dijkstra’s algorithm search in all


directions for the shortest path. It is an
breadth-first algorithm
L3-Network Algorithms

Other shortest path algorithms


Algorithms with heuristics do not always give the best answer
(only a reasonably good answer is guaranteed).
Heuristic 1 – Direction limitation (nodes closer to the end node)
A* algorithm
Euclidean distances, depth-first & breadth-first

More likely that the shortest


path is “towards” the end node
L3-Network Algorithms

Other shortest path algorithms


Algorithms with heuristics do not always give the best answer
(only a reasonably good answer is guaranteed).

Heuristic 2 – Hierarchical algorithm


Minor roads and major roads

Minor roads only the last and


first part of the route.
Major roads (highways) for the
main part of the route.
L3-Network Algorithms

Other shortest path algorithms


Algorithms with heuristics do not always give the best answer
(only a reasonably good answer is guaranteed).

Heuristic 3 – super nodes (transit nodes)

Stored distances between


super nodes (transit nodes)
L3-Network Algorithms

Neighbourhood graphs – minimum spanning tree (MST)

Minimum Spanning Tree (MST)


1. No isolated node
2.
L3-Network Algorithms

Kruskal’s algorithm for computing MST

Edges
Original Ordered
Sort the edges in ascending
order after distance.

While there are isolated


nodes in the ordered list
add the currently
shortest node to the
MST.

Do NOT add nodes that


create a closed circle

Source: Sedgewick 2002


L3-Network Algorithms

Neighbourhood graphs and Clustering

Visually easy to identify clusters,


but how to compute?
L3-Network Algorithms

Neighbourhood graphs and Clustering

Minimum Spanning Tree


(MST)
1. No isolated node
2.
Threshold distance
L3-Network Algorithms

Neighbourhood graphs and Clustering

Minimum Spanning Tree


(MST)
1. No isolated node
2.
Threshold distance
L3-Network Algorithms

Traveling salesman problem (TSP)

1. Begin and end in the


same node (or in
different nodes)
2. Visit all nodes.
3. Minimize total length of
the route.
L3-Network Algorithms

Traveling salesman problem (TSP)


How to solve the TSP problems?

To compute all possible combinations


and chose the shortest one is too
computational demanding.
It is NP-complete

Use the minimum spanning tree:


The maximum length of the TSP is at most 2 times the total
length of the MST
L3-Network Algorithms

Traveling salesman problem (TSP)


How to solve the TSP problems?

Compute the MST e.g. with


Kruskal’s algorithm.

Do iterative improvements until no


further improvements are possible.

A local optimum of the TSP is found.

You might also like