2. A graph is defined as a set
of nodes and a set of edges, where
each edge is a pair of nodes.
3. 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).
We call this edge-clause form
W
4. 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
5. 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]), .........].
6. 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 form
arc(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])]
7. 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.
8. Basic features of
Dijkstra's algorithm
For 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.
10. 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 .
11. 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.
12. Basic steps towards
The 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
13. 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.
14. Basic steps towards
This process is repeated until the labels of all vertices in the
graph are permanent.
15. Start
Identify source node and
destination node as V1 and V2
Set V1 as T-node
Set T-node’s label to “permanent” and update
neighbor's status record set
Identify the tentative node linked to V1 that has the
lowest weight and set it as T-node
Is T-Node is
V2? END
Based on information in status record set, do these until u
reach V1. The string of link represents the best route
18. 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]
19. 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.
20. 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.
21. 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 of
failure is negligible.