Monday, 11 May 2015

program mencari jalur terpendek dengan dijsktra

nah di sini ane ingin share hasil belajar ane yang ane dapat dari blog sebelah...
program ini katanya mencari jalur terpendek di antara beberapa array yang sudah kita beri nilai sendiri atau static
nah langsung aja ke tkp banyak omong yang ada malah ngelantur


#include 
#include 

#define V 9
 
 using namespace std;

int minDistance(int dist[], bool sptSet[])
{

   int min = INT_MAX, min_index;
 
   for (int v = 0; v < V; v++)
     if (sptSet[v] == false && dist[v] <= min)
         min = dist[v], min_index = v;
 
   return min_index;
}
 

int printSolution(int dist[], int n)
{
   printf("Vertex   Distance from Source\n");
   for (int i = 0; i < V; i++)
      printf("%d \t\t %d\n", i, dist[i]);
}
 

void dijkstra(int graph[V][V], int src)
{
     int dist[V];     
 
     bool sptSet[V]; 
 

     for (int i = 0; i < V; i++)
        dist[i] = INT_MAX, sptSet[i] = false;
 
   
     dist[src] = 0;
 
    
     for (int count = 0; count < V-1; count++)
     {
  
       int u = minDistance(dist, sptSet);
 
  
       sptSet[u] = true;
 
   
       for (int v = 0; v < V; v++)
 
      
         if (!sptSet[v] && graph[u][v] && dist[u] != INT_MAX 
                                       && dist[u]+graph[u][v] < dist[v])
            dist[v] = dist[u] + graph[u][v];
     }
 
    
     printSolution(dist, V);
}
 

int main()
{
 
   int graph[V][V] = {{0, 4, 0, 0, 0, 0, 0, 8, 0},
                      {4, 0, 8, 0, 0, 0, 0, 11, 0},
                      {0, 8, 0, 7, 0, 4, 0, 0, 2},
                      {0, 0, 7, 0, 9, 14, 0, 0, 0},
                      {0, 0, 0, 9, 0, 10, 0, 0, 0},
                      {0, 0, 4, 0, 10, 0, 2, 0, 0},
                      {0, 0, 0, 14, 0, 2, 0, 1, 6},
                      {8, 11, 0, 0, 0, 0, 1, 0, 7},
                      {0, 0, 2, 0, 0, 0, 6, 7, 0}
                     };
 
    dijkstra(graph, 0);
 
  return 0;

}

nah sedikit ane jelasin dari program di atas yaitu pada graph[V][V] yang artinya array graph[9][9] kenapa 9 karena kita udah menentukan bahwa nilai v adalah 9 dari define V 9 pada baris ke lima kalo gak salah hehehe
nah cara baca array tersebut adalah pertama dari array 0
0=0 titik awal trus titik 2=4 titik 3=0 karena dari titik 0 ke titik 3 tali nya tidak terhubung dan begitu seterus nya sampai titik 7=8 karena garis nya terhubung makanya di beri nilai 8 dan selain itu 0
begitu seterusnya dari array1 hingga 9

void dijkstra(int graph[V][V], int src) yaitu menentukan jalan terpendek dari beberapa garis atau jalan

int printSolution(int dist[], int n) yaitu untuk menampilkan data dalam satu array yang sudah di bentuk dari void dijkstra(int graph[V][V], int src)
untuk gambar nya bisa di lihat pada link di bawah ini
sumber : http://www.geeksforgeeks.org/greedy-algorithms-set-6-dijkstras-shortest-path-algorithm/

0 comments:

Post a Comment