22
Jagdeep singh Professor : Melara Comp 232 Presentation on prolog : Dijkstra’s Algorithm

Documentd

Embed Size (px)

Citation preview

Page 1: Documentd

Jagdeep singhProfessor : Melara

Comp 232

Presentation on prolog :

Dijkstra’s Algorithm

Page 2: Documentd

Graphs

A graph is defined as a set of nodes and a set of edges, where each edge is a pair of nodes.

Page 3: Documentd

There are several ways to represent graphs in Prolog. One method is to represent each edge separately as one

clause (fact). • edge(1, 5). edge(1, 7). edge(2, 1). edge(2, 7). edge(3, 1). edge(3, 6).

edge(4, 3). edge(4, 5). edge(5, 8). edge(6, 4). edge(6, 5). edge(7, 5). edge(8, 6). edge(8, 7).

W We call this edge-clause form

Page 4: Documentd

Another method is to represent the whole graph as one data object. According to the definition of the graph as a pair of two sets (nodes and edges).EXAMPLE :

graph([b,c,d,f,g,h,k],[e(b,c),e(b,f),e(c,f),e(f,k),e(g,h)]) .

We call this graph-term form. Note, that the lists are kept sorted, they are really sets, without duplicated elements. Each edge appears only once in the edge list.

The graph-term form is a default representation

Page 5: Documentd

A third representation method is to associate with each node the set of nodes that are adjacent to that node .

EXAMPLE: [n(b,[c,f]), n(c,[b,f]), n(d,[]), n(f,[b,c,k]), .........].

Page 6: Documentd

Directed graphs These are represented by ordered pairs To represent a directed graph, the forms

discussed above are slightly modified. The example graph is represented as follows:When the edges are directed we call them arcs

Arc-clause formarc(s,u).arc(u,r).

Graph-term form digraph([r,s,t,u,v],[a(s,r),a(s,u),a(u,r),a(u,s),a(v,u)])

Adjacency-list form[n(r,[]),n(s,[r,u]),n(t,[]),n(u,[r]),n(v,[u])]

Page 7: Documentd

Dijkstra

Dijkstra's algorithm, introduced by the dutch computer scientist , is a graph searching algorithm.

Dijkstra’s algorithm is used to solve the problems of finding the shortest path between edge - weighted graphs in which all the weights are non-negative.

Page 8: Documentd

Basic features of Dijkstra's algorithmFor a given source vertices it finds the lowest

cost(i.e. The shortest path) for every other vertices .

It can also be used to find the lowest cost for a particular destination by the stopping the algorithm in between.

For example:- If the vertices represents the cities and the edge path cost represents the distance between pair cities then dijkstra’s can be used to find the shortest route between one city and all other.

Page 9: Documentd

An example of Dijkstra’s Algorithm

Page 10: Documentd

Dijkstra’s Algorithm can be applied to network routing, as it can be used

to find the shortest path from any source computer to any other

computer in the network .

Page 11: Documentd

Basic steps towards the algorithm

The algorithm begins by initializing any vertex in the graph (vertex A, for example) a permanent label with the value of 0, and all other vertices a temporary label with the value of 0. 

Page 12: Documentd

Basic steps towardsThe algorithm then proceeds to select the least

cost edge connecting a vertex with a permanent label (currently vertex A) to a vertex with a temporary label (vertex B, for example).   Vertex B's label is then updated from a temporary to a permanent label. Vertex B's value is then determined by the addition of the cost of the edge with vertex A's value

Page 13: Documentd

Basic steps towards

The next step is to find the next least cost edge extending to a vertex with a temporary label from either vertex A or vertex B (vertex C, for example), change vertex C's label to permanent, and determine its distance to vertex A. 

Page 14: Documentd

Basic steps towards This process is repeated until the labels of all vertices in the graph are permanent. 

Page 15: Documentd

FLOW CHART OF THE Algorithm

Start

Identify source node and destination node as V1 and

V2

Set V1 as T-node

Set T-node’s label to “permanent” and updateneighbor's status record set

Identify the tentative node linked to V1 that has thelowest weight and set it as T-node

Is T-Node is V2?

Based on information in status record set, do these until ureach V1. The string of link represents the best route

END

Page 16: Documentd

Pseudo code towards the Algorithm

Page 17: Documentd

dijkstra(Graph,MinDist,[],MinDist).dijkstra(Graph,Closed,Open,MinDist):-

min(Open,V-D,ReducedOpen),adjacent(Graph,V,AdjacentNodes),

diff(AdjacentNodes,Closed,PrunedNodes),addDist(PrunedNodes,D,UpdatedPrunedNodes),

nodeMerge(UpdatedPrunedNodes,ReducedOpen,NextOpen),

dijkstra(Graph,[V-D|Closed],NextOpen,MinDist).

Page 18: Documentd

Rules which are used above in the pesudo code

min(L,Min,Rest):-The method min above takes a list L and puts the smallest value in the MIN with the smallest value in L and Rest with a list containing all values in L excluding Min.

adjacent(Graph,Node,Adj) which is true if Adj is a list of all nodes reachable from the node Node in one hop in Graph. Node is of the form of a single graph vertex label (i.e. the minimum cost is not included), Adj should be a list of node-cost pairs.

For example, given the query adjacent([a-b-1,a-c-2,b-a-4,b-c-1],a,A) Prolog should return A = [b-1,c-2]

Page 19: Documentd

Rules which are used above in the pesudo code

diff(L,M,N) takes a list L and a list M and unifies N with a list containing all items in L which are not in M. The list L is assumed to contain no duplicate elements.

addDist(Nodes, D, NewNodes) which is true if NewNodes is a list containing all the nodes in Nodes with their edge cost incremented by D.

Page 20: Documentd

Rules which are used above in the pesudo code

nodeMerge(A,B,C) which merge lists A and B together and unifies the result in C. Lists A, B and C contain no duplicate elements: i.e. within the each list there is no pair of nodes V1,V2 such that V1=V2.

Page 21: Documentd

Concluison and suggestion

In today’s world, networking plays an important role in communication between autonomous

computers. For this many hardware devices and software algorithms have been designed. So far,

the traditional system used for the communication were the hub networking system and many

other hardware applications present in the market, but as they operate on electricity, it may lead

to the failure of device due to some malfunctioning in the hardware circuitry. Dijkstra Algorithm provides

easy understandability and hence its chances offailure is negligible.

Page 22: Documentd

References http://students.ceid.upatras.gr/~papagel/project/kef5_7_1.htm http://www.animal.ahrgr.de/showAnimationDetails.php3?lang=

en&anim=16

http://www.cs.sunysb.edu/~skiena/combinatorica/animations/dijkstra.html

http://www.ibiblio.org/links/devmodules/graph_networking/xhtml/page13.xml

Survivable networks: algorithms for diverse routing By Ramesh Bhandari Edition: illustrated Published by Springer, 1999 ISBN page 22