COIN-OR::LEMON - Graph Library

source: lemon-0.x/src/work/jacint/dijkstra.cc @ 175:ebccffe4d47b

Last change on this file since 175:ebccffe4d47b was 173:de9849252e78, checked in by jacint, 21 years ago

* empty log message *

File size: 2.6 KB
Line 
1#include <iostream>
2#include <fstream>
3
4#include <list_graph.hh>
5#include <dimacs.hh>
6#include <dijkstra.h>
7#include <time_measure.h>
8
9#include <bin_heap.hh>
10#include <fib_heap.h>
11
12using namespace hugo;
13
14int main(int, char **) {
15  typedef ListGraph::NodeIt NodeIt;
16  typedef ListGraph::EachNodeIt EachNodeIt;
17  typedef ListGraph::InEdgeIt InEdgeIt;
18
19  ListGraph G;
20  NodeIt s, t;
21  ListGraph::EdgeMap<int> cap(G);
22  readDimacsMaxFlow(std::cin, G, s, t, cap);
23
24  std::cout << "dijkstra demo ..." << std::endl;
25 
26  double pre_time=currTime();
27    Dijkstra<ListGraph, int, FibHeap<ListGraph::NodeIt, int,
28    ListGraph::NodeMap<int> > > dijkstra_test(G, s, cap);
29    dijkstra_test.run();
30  double post_time=currTime();
31   
32  std::cout << "running time with fib_heap: "
33            << post_time-pre_time << " sec"<< std::endl;
34 
35  pre_time=currTime();
36  Dijkstra<ListGraph, int, BinHeap<ListGraph::NodeIt, int,
37    ListGraph::NodeMap<int> > > dijkstra_test2(G, s, cap);
38  dijkstra_test2.run();
39  post_time=currTime();
40 
41  std::cout << "running time with bin_heap: "
42            << post_time-pre_time << " sec"<< std::endl;
43 
44
45  int hiba_fib=0;
46  int hiba_bin=0;
47  EachNodeIt u;
48  for ( G.getFirst(u) ; G.valid(u); G.next(u) ) {
49    InEdgeIt e;
50    for ( G.getFirst(e,u); G.valid(e); G.next(e) ) {
51      NodeIt v=G.tail(e);
52      if ( dijkstra_test.dist(u) - dijkstra_test.dist(v) > cap.get(e) )
53        {
54          std::cout<<"Hibas el a fibonaccis Dijkstraban: "
55                   << dijkstra_test.dist(u) - dijkstra_test.dist(v) -
56            cap.get(e)<<std::endl;
57          ++hiba_fib;
58        }
59      if ( dijkstra_test2.dist(u) - dijkstra_test2.dist(v) > cap.get(e) )
60        {
61          std::cout<<"Hibas el a binarisos Dijkstraban: "
62                   << dijkstra_test2.dist(u) - dijkstra_test2.dist(v) -
63            cap.get(e)<<std::endl;
64          ++hiba_bin;
65        }
66      if ( e==dijkstra_test.pred(u) &&
67           dijkstra_test.dist(u) - dijkstra_test.dist(v) != cap.get(e) )
68        {
69          std::cout<<"Hibas fael a fibonaccis Dijkstraban: "<<
70            dijkstra_test.dist(u) - dijkstra_test.dist(v)- cap.get(e)<<std::endl;
71          ++hiba_fib;
72        }
73      if ( e==dijkstra_test2.pred(u) &&
74           dijkstra_test2.dist(u) - dijkstra_test2.dist(v) != cap.get(e) )
75        {
76          std::cout<<"Hibas fael a binarisos Dijkstraban: "<<
77            dijkstra_test2.dist(u) - dijkstra_test2.dist(v)- cap.get(e)<<std::endl;
78          ++hiba_bin;
79        }
80    }
81 
82    if ( dijkstra_test.dist(u) != dijkstra_test2.dist(u) )
83      std::cout << "Nem egyezik meg a tavolsag!"<<std::endl;
84
85
86 }
87
88  std::cout << "Hibas elek szama a fibonaccis Dijkstraban: "
89            << hiba_fib << " a " << G.edgeNum() <<"-bol."<< std::endl;
90
91  std::cout << "Hibas elek szama a binarisos Dijkstraban: "
92            << hiba_bin << " a " << G.edgeNum() <<"-bol."<< std::endl;
93
94
95
96
97  return 0;
98}
Note: See TracBrowser for help on using the repository browser.