0% found this document useful (0 votes)
55 views4 pages

Implementation Dijkstra's Path Finding: Problem

This document discusses implementing Dijkstra's pathfinding algorithm to find the shortest path between nodes in a graph. It describes representing the problem as a graph with nodes and weighted edges. The weights account for distance and mobility between nodes. The algorithm uses a queue and tracks the minimum distance and preceding node to each node to iteratively find the shortest path from a given final node to all other nodes. Pseudocode provides the main steps of initializing the data structures and visiting nodes to trace the path back to the starting point.

Uploaded by

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

Implementation Dijkstra's Path Finding: Problem

This document discusses implementing Dijkstra's pathfinding algorithm to find the shortest path between nodes in a graph. It describes representing the problem as a graph with nodes and weighted edges. The weights account for distance and mobility between nodes. The algorithm uses a queue and tracks the minimum distance and preceding node to each node to iteratively find the shortest path from a given final node to all other nodes. Pseudocode provides the main steps of initializing the data structures and visiting nodes to trace the path back to the starting point.

Uploaded by

rajan
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 4

Implementation Dijkstra’s Path finding

In normal computer game a non player character can find a shortest path from initial point to final point
by path-finding algorithm. In this report a Dijkstra’s path-finding will be implement and explained.

Problem

E1
V1 V2

E3
E2 E4

V3 V4
E5

Paths are represented by graph model as below. Each edge can have different distance or mobility to
other edge. We have to map each node V to physical location in x-y coordinate and distance can be
determined from Euclidian distance. Mobility from node Vi to Vf determine ability to move between the
nodes. The distance and mobility between nodes give effective distance as w=d/m, where w is weight or
effective distance, d is Euclidian distance and m is mobility is in range from 0 to 1. We can create
mobility map from bitmap image as similar as the figure.
Data structure
A good algorithm is constructed from good data structure. The data structure has single graph g with
many nodes and each node has many neighbour edges. So the data structure can implement as a tree.

V1 V2 V3 V4

E1 E2 E1 E3 E4 E2 E3 E5 E4 E5

A node Vi is associated to physically space so the node should contain position. In path-finding algorithm
we have to generate a queue list Q, which is a list of connected non-visited nodes for considering nodes.
I also add two more variable Wmin and Vmin. The Wmin is total shortest distance from final node to
considering node and Vmin is nearest node in shortest path connected to considering node.

Generating a graph
A mobility map is loaded and checked for valid space that a character possibly occupies. For each node
the neighbour edges are listed and save in data structure. The weight w is computed and saved in edge.
Once a graph is generated we can computed shortest path by Dijksta’s path-finding algorithm.
Dijksta’s path-finding algorithm
In this implementation I will start searching form final node because when we visited all nodes the
Vmin will be computed. Then we can find direction to final node with any initial node by simply reading
Vmin at the particular node.

Function Main(Final_Node)

o Set all node un-visited, Vmin=0 and Wmin=Inf;


o G=Visit(G, Final_Node)

Function G=Visit(G,Q)

o Next_Q=[];
o For each parent node Vp in Q of the Graph G
o If node Vp has not visited
 For each edge E connoting parent node Vp to child node Vc
 If Vp.Wmin+E.W < Vc.Wmin
o Vc.Wmin= Vp.Wmin+E.W
o Vc.Vmin=Vp
 End
 Add Vc to Next_Q
 End
o End
o End
o Set Vp as visited
o If Next_Q is not empty
o Visit(Next_Q)
o End

You can find

Example result

The figure below shows a show test path from the red node to the green node. The mobility is show in
white the completely black area is invalid space (a character cannot occupy the area).
Wroted by Wasit Limprasert

You might also like