[lnkForumImage]
TotalShareware - Download Free Software

Confronta i prezzi di migliaia di prodotti.
Asp Forum
 Home | Login | Register | Search 


 

Forums >

comp.programming

Dijkstra and Bellman-Ford-Moore's algorithms

Ramine

3/20/2016 8:36:00 PM


Hello,


Dijkstra and Bellman-Ford-Moore's algorithms.


I have just added the Bellman-Ford-Moore (BFM) algorithm which predates
Dijkstra by 4 or 5 years. Better still, BFM is robust in the sense that
it can handle negative arc-weights and detect and find negative cycles.
Dijkstra cannot do this.


Dijkstra's algorithm for Delphi and FreePascal. Computes the shortest
path tree. Assumes all weights are nonnegative.

and

Bellman-Ford-Moore's algorithm for Delphi and FreePascal, computes the
shortest path tree. The edge weights can be positive, negative or zero.


Version: 1.1


Authors: Robert Sedgewick, Kevin Wayne
and enhanced by Amine Moulay Ramdane

Email: aminer@videotron.ca

Description:

This project consists of this optimal implementation that uses
Dijkstra's algorithm with a binary heap that takes a time complexity of
E*log(V), V is the number of vertices and E is the number of edges. This
library can be used in parallel clusters manner by dividing your graph
in many parts to speed much your parallel algorithm, also i have added
an option to the algorithm that permit you to pass the edges of the
graph that you can substract from your graph to be able to give you
algorithm more control if you want for example to ignore congestions in
some roads...

You have to have a 32 bit or 64 bit java compiler and you have to
compile first the java library by running the compile1.bat batch file,
after that if you have compiled it with a 32 bit java compiler
just compile after that jtest1.dpr with a 32 bit delphi or freepascal
compiler, but if you have compiled it with a 64 bit java compiler
just compile after that jtest1.dpr with a 64 bit delphi or freepascal
compiler.

Please take a look at the jtest1.dpr example, you will notice that
you have to call the java SP() method by passing it the name of the file
that contains the graph and by passing it a second parameter that is the
source from where you want to start searching and the third parameter is
an array that contains the edges that you want to substract: i have
enhanced the algorithm with a new option, you can pass the edges that
you want to substract by passing the edges in an array, the edges must
be arranged two by two in the array, the first and the second element of
the array is the first edge that you want to substract etc. after that
you have to call the java SP1() method by passing it the destination
that you want to search, and the java SP1() method will return the
shortest path to the
destination and will return also the number of vertices. Please read
carefully jtest1.dpr to learn more.

This project consists also of this optimal implementation that uses
Bellman-Ford-Moore's algorithm that takes a time complexity of E*V, V
is the number of vertices and E is the number of edges. This library can
be used in parallel clusters manner by dividing your graph in many parts
to speed much your parallel algorithm, also i have added an option to
the algorithm that permit you to pass the edges of the graph that you
can substract from your graph to be able to give you algorithm more
control if you want for example to ignore congestions in some roads...

The Bellman-Ford-Moore (BFM) algorithm which predates Dijkstra by 4 or 5
years. Better still, BFM is robust in the sense that it can handle
negative arc-weights and detect and find negative cycles. Dijkstra
cannot do this.

You have to have a 32 bit or 64 bit java compiler and you have to
compile first the java library by running the compile1.bat batch file,
after that if you have compiled it with a 32 bit java compiler
just compile after that jtest2.dpr with a 32 bit delphi or freepascal
compiler, but if you have compiled it with a 64 bit java compiler
just compile after that jtest2.dpr with a 64 bit delphi or freepascal
compiler.

Please take a look at the jtest2.dpr example, you will notice that
you have to call the java SP() method by passing it the name of the file
that contains the graph and by passing it a second parameter that is the
source from where you want to start searching and the third parameter is
an array that contains the edges that you want to substract: i have
enhanced the algorithm with a new option, you can pass the edges that
you want to substract by passing the edges in an array, the edges must
be arranged two by two in the array, the first and the second element of
the array is the first edge that you want to substract etc. after that
you have to call the java SP1() method by passing it the destination
that you want to search, and the java SP1() method will return the
shortest path to the destination and will return also the number of
vertices. Please read carefully jtest2.dpr to learn more, that's all.

You download it from:

https://sites.google.com/site/aminer68/dijkstra-and-bellman-ford-moore-s-...

Language: FPC Pascal v2.2.0+ / Delphi 7+: http://www.freep...
Operating Systems: Windows,

Required FPC switches: -O3 -Sd -dFPC -dFreePascal

-Sd for delphi mode....

Required Delphi switches: -$H+ -DDelphi

For Delphi XE-XE7 use the -DXE switch



Thank you,
Amine Moulay Ramdane.