Advertisement
madalinaradu

IA Cautari

Apr 11th, 2019
124
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 19.31 KB | None | 0 0
  1. #include<iostream>
  2. #include<conio.h>
  3. #include<iomanip>
  4.  
  5. using namespace std;
  6. int H[20];
  7. int CreareMatrice(int A[20][20])
  8. {
  9.  
  10.     A[0][1] = 75;
  11.     A[1][0] = 75;
  12.  
  13.     A[0][2] = 140;
  14.     A[2][0] = 140;
  15.  
  16.     A[0][3] = 118;
  17.     A[3][0] = 118;
  18.  
  19.     A[1][4] = 71;
  20.     A[4][1] = 71;
  21.  
  22.     A[4][2] = 151;
  23.     A[2][4] = 151;
  24.  
  25.     A[3][7] = 111;
  26.     A[7][3] = 111;
  27.  
  28.     A[7][10] = 70;
  29.     A[10][7] = 70;
  30.  
  31.     A[10][11] = 75;
  32.     A[11][10] = 75;
  33.  
  34.     A[11][12] = 120;
  35.     A[12][11] = 120;
  36.  
  37.     A[2][5] = 99;
  38.     A[5][2] = 99;
  39.  
  40.     A[2][6] = 80;
  41.     A[6][2] = 80;
  42.  
  43.     A[6][12] = 146;
  44.     A[12][6] = 146;
  45.  
  46.     A[6][9] = 97;
  47.     A[9][6] = 97;
  48.  
  49.     A[12][9] = 138;
  50.     A[9][12] = 138;
  51.  
  52.     A[5][8] = 211;
  53.     A[8][5] = 211;
  54.  
  55.     A[9][8] = 101;
  56.     A[8][9] = 101;
  57.  
  58.     A[8][13] = 90;
  59.     A[13][8] = 90;
  60.  
  61.     A[8][14] = 85;
  62.     A[14][8] = 85;
  63.  
  64.     A[14][15] = 98;
  65.     A[15][14] = 98;
  66.  
  67.     A[15][16] = 86;
  68.     A[16][15] = 86;
  69.  
  70.     A[14][17] = 142;
  71.     A[17][14] = 142;
  72.  
  73.     A[17][18] = 92;
  74.     A[18][17] = 92;
  75.  
  76.     A[18][19] = 87;
  77.     A[19][18] = 87;
  78.  
  79.  
  80.     return 0;
  81. }
  82.  
  83. //creare H - se refera la distanta pana la Bucuresti
  84. int CreareVector(int H[20]){
  85.     H[0]=366; //Arad
  86.     H[1]=374;//Zerind
  87.     H[2]=253;//Sibiu
  88.     H[3]=329;//Timisoara
  89.     H[4]=380;//Oradea
  90.     H[5]=176;//Fagaras
  91.     H[6]=193;//RV
  92.     H[7]=244;//Lugoj
  93.     H[8]=0;//Bucuresti
  94.     H[9]=101;//Pitesti
  95.     H[10]=241;//Mehadia
  96.     H[11]=242;//Drobeta
  97.     H[12]=160;//Craiova
  98.     H[13]=77;//Giurgiu
  99.     H[14]=80;//Urziceni
  100.     H[15]=151;//Hirsova
  101.     H[16]=161;//Efoerie
  102.     H[17]=199;//Vaslui
  103.     H[18]=226;//Iasi
  104.     H[19]=234;//Neamt
  105.     return 0;
  106. }
  107.  
  108. int gasireVecini(int n,int A[20][20], /*char *nume[20],*/int noduri[20],int &nrnoduri)
  109. {
  110.     //cout << "Orasul " << nume[n] << " are ca vecini:" << endl;
  111.     for(int i=0; i<20; i++)
  112.         if (A[n][i] != 0)
  113.         {
  114.             noduri[nrnoduri++] = i;
  115.             //cout << "-" << nume[i] << " aflat la " << A[n][i] << " km distanta" << endl;
  116.         }
  117.  
  118.     return 0;
  119. }
  120.  
  121.  
  122. int latime(int start, int stop, int A[20][20], char *nume[20])
  123. {
  124.     int nrNoduri = 0, contorViz = 0;
  125.  
  126.     int noduri[20];//orasele in asteptare
  127.     int viz[20];//orase deja vizitate
  128.     int parinte[20];//parinte[i]=j =>j este parintele lui i
  129.     int gasit = 0;
  130.     for (int i = 0; i < 20; i++)
  131.         viz[i] = 0;
  132.     viz[start] = 1;
  133.     noduri[0] = start;
  134.     nrNoduri++;
  135.     int contorpas = 0;
  136.  
  137.     cout << "Pasul " << contorpas++ << ": ";
  138.     for (int i = 0; i < nrNoduri; i++)
  139.         cout << nume[noduri[i]] << " ";
  140.     cout << endl;
  141.  
  142.  
  143.     while (gasit == 0 && nrNoduri > 0)
  144.     {
  145.         int nod = noduri[0];
  146.         //cout << nume[nod] << " ";
  147.         for (int i = 0; i < nrNoduri - 1; i++)
  148.             noduri[i] = noduri[i + 1];
  149.         nrNoduri--;
  150.         if (nod == stop)
  151.             gasit = 1;
  152.         else
  153.             for (int i = 0; i<20; i++)
  154.                 if ((A[nod][i] != 0) && (viz[i] == 0))
  155.                 {
  156.                     noduri[nrNoduri++] = i;
  157.                     viz[i] = 1;//cout << "-" << nume[i] << " aflat la " << A[n][i] << " km distanta" << endl;
  158.                     parinte[i] = nod;
  159.                 }
  160.         cout << "Pasul " << contorpas++ << ": ";
  161.         for (int i = 0; i < nrNoduri; i++)
  162.             cout << nume[noduri[i]] << " ";
  163.         cout << endl;
  164.         //cout << nume[nod] << " ";
  165.  
  166.     }
  167.     cout << endl;
  168.     int temp = stop;
  169.     int contorTraseu = 0;
  170.     int traseu[20];
  171.     while (parinte[temp] != start)
  172.     {
  173.         traseu[contorTraseu++] = temp;
  174.         temp = parinte[temp];
  175.     }
  176.     traseu[contorTraseu++] = temp;
  177.     traseu[contorTraseu++] = parinte[temp];
  178.     for (int i = contorTraseu - 1; i >= 0; i--)
  179.     {
  180.         cout << nume[traseu[i]] << ", ";
  181.     }
  182.  
  183.     return 0;
  184. }
  185.  
  186. int adancime(int start, int stop, int A[20][20], char *nume[20])
  187. {
  188.  
  189.  
  190.  
  191.     int nrNoduri = 0, contorViz = 0;
  192.  
  193.     int noduri[20];//orasele in asteptare
  194.     int viz[20];//orase deja vizitate
  195.     int parinte[20];//parinte[i]=j =>j este parintele lui i
  196.     int gasit = 0;
  197.     for (int i = 0; i < 20; i++)
  198.         viz[i] = 0;
  199.     viz[start] = 1;
  200.     noduri[0] = start;
  201.     nrNoduri++;
  202.     int contorpas = 0;
  203.  
  204.     cout << "Pasul " << contorpas++ << ": ";
  205.     for (int i = 0; i < nrNoduri; i++)
  206.         cout << nume[noduri[i]] << " ";
  207.     cout << endl;
  208.  
  209.  
  210.     while (gasit == 0 && nrNoduri > 0)
  211.     {
  212.         int nod = noduri[0];
  213.         for (int i = 0; i < nrNoduri - 1; i++)
  214.             noduri[i] = noduri[i + 1];
  215.         nrNoduri--;
  216.         if (nod == stop)
  217.             gasit = 1;
  218.         else
  219.             for (int i = 0; i<20; i++)
  220.                 if ((A[nod][i] != 0) && (viz[i] == 0))
  221.                 {
  222.                     for (int j = nrNoduri-1; j >= 0; j--)
  223.                         noduri[j+1] = noduri[j];
  224.                     nrNoduri++;
  225.                     noduri[0] = i;
  226.                     viz[i] = 1;
  227.                     parinte[i] = nod;
  228.                 }
  229.         cout << "Pasul " << contorpas++ << ": ";
  230.         for (int i = 0; i < nrNoduri; i++)
  231.             cout << nume[noduri[i]] << " ";
  232.         cout << endl;
  233.  
  234.     }
  235.     cout << endl;
  236.     int temp = stop;
  237.     int contorTraseu = 0;
  238.     int traseu[20];
  239.     while (parinte[temp] != start)
  240.     {
  241.         traseu[contorTraseu++] = temp;
  242.         temp = parinte[temp];
  243.     }
  244.     traseu[contorTraseu++] = temp;
  245.     traseu[contorTraseu++] = parinte[temp];
  246.     for (int i = contorTraseu - 1; i >= 0; i--)
  247.     {
  248.         cout << nume[traseu[i]] << ", ";
  249.     }
  250.  
  251.     return 0;
  252. }
  253. //cautare limitata stocam adancimea fiecarui nod din arbore
  254.  
  255. int adancimeLimitata(int start, int stop, int A[20][20], char *nume[20], int limita)
  256. {
  257.  
  258.     int nrNoduri = 0, contorViz = 0;
  259.  
  260.     int noduri[20];//orasele in asteptare
  261.     int viz[20];//orase deja vizitate
  262.     int parinte[20];//parinte[i]=j =>j este parintele lui i
  263.     int gasit = 0;
  264.     for (int i = 0; i < 20; i++)
  265.         viz[i] = 0;
  266.     viz[start] = 1;
  267.     noduri[0] = start;
  268.     nrNoduri++;
  269.     int contorpas = 0;
  270.  
  271.     cout << "Pasul " << contorpas++ << ": ";
  272.     for (int i = 0; i < nrNoduri; i++)
  273.         cout << nume[noduri[i]] << " ";
  274.     cout << endl;
  275.     int adancime[20];
  276.     adancime[start]=0;
  277.  
  278.  
  279.     while (gasit == 0 && nrNoduri > 0)
  280.     {
  281.         int nod = noduri[0];
  282.         for (int i = 0; i < nrNoduri - 1; i++)
  283.             noduri[i] = noduri[i + 1];
  284.         nrNoduri--;
  285.         if (nod == stop)
  286.             gasit = 1;
  287.         else
  288.             for (int i = 0; i<20; i++)
  289.                 if ((A[nod][i] != 0) && (viz[i] == 0) && adancime[nod]<limita-1)
  290.                 {
  291.                     for (int j = nrNoduri-1; j >= 0; j--)
  292.                         noduri[j+1] = noduri[j];
  293.                     nrNoduri++;
  294.                     noduri[0] = i;
  295.                     viz[i] = 1;
  296.                     parinte[i] = nod;
  297.                     adancime[i]=adancime[nod]+1;
  298.                 }
  299.         cout << "Pasul " << contorpas++ << ": ";
  300.         for (int i = 0; i < nrNoduri; i++)
  301.         {
  302.             cout << nume[noduri[i]] << " ";
  303.         }
  304.         cout << endl;
  305.     }
  306.  
  307.     if(gasit)
  308.     {
  309.         cout << endl;
  310.         int temp = stop;
  311.         int contorTraseu = 0;
  312.         int traseu[20];
  313.         while (parinte[temp] != start)
  314.         {
  315.             traseu[contorTraseu++] = temp;
  316.             temp = parinte[temp];
  317.         }
  318.         traseu[contorTraseu++] = temp;
  319.         traseu[contorTraseu++] = parinte[temp];
  320.         for (int i = contorTraseu - 1; i >= 0; i--)
  321.         {
  322.             cout<<nume[traseu[i]]<<" "<<adancime[traseu[i]] <<", ";
  323.         }
  324.     }
  325.     else
  326.         cout<<"nu  s-a gasit drum de la  "<<nume[start]<<" la  " <<nume[stop]<<"cu limita  "<<limita<<endl;
  327.     return 0;
  328. }
  329.  
  330. int cautareLimApel(int start, int stop, int A[20][20], char *nume[20], int limita)
  331. {
  332.  
  333.     int nrNoduri = 0, contorViz = 0;
  334.  
  335.     int noduri[20];//orasele in asteptare
  336.     int viz[20];//orase deja vizitate
  337.     int parinte[20];//parinte[i]=j =>j este parintele lui i
  338.     int gasit = 0;
  339.     for (int i = 0; i < 20; i++)
  340.         viz[i] = 0;
  341.     viz[start] = 1;
  342.     noduri[0] = start;
  343.     nrNoduri++;
  344.     int contorpas = 0;
  345.  
  346.     cout << "Pasul " << contorpas++ << ": ";
  347.     for (int i = 0; i < nrNoduri; i++)
  348.         cout << nume[noduri[i]] << " ";
  349.     cout << endl;
  350.     int adancime[20];
  351.     adancime[start]=0;
  352.  
  353.     while (gasit == 0 && nrNoduri > 0)
  354.     {
  355.         int nod = noduri[0];
  356.         for (int i = 0; i < nrNoduri - 1; i++)
  357.             noduri[i] = noduri[i + 1];
  358.         nrNoduri--;
  359.         if (nod == stop)
  360.             gasit = 1;
  361.         else
  362.             for (int i = 0; i<20; i++)
  363.                 if ((A[nod][i] != 0) && (viz[i] == 0) && adancime[nod]<limita-1)
  364.                 {
  365.                     for (int j = nrNoduri-1; j >= 0; j--)
  366.                         noduri[j+1] = noduri[j];
  367.                     nrNoduri++;
  368.                     noduri[0] = i;
  369.                     viz[i] = 1;
  370.                     parinte[i] = nod;
  371.                     adancime[i]=adancime[nod]+1;
  372.                 }
  373.         cout << "Pasul " << contorpas++ << ": ";
  374.         for (int i = 0; i < nrNoduri; i++)
  375.         {
  376.             cout << nume[noduri[i]] << " ";
  377.         }
  378.         cout << endl;
  379.     }
  380.  
  381.     if(gasit)
  382.     {
  383.         cout << endl;
  384.         int temp = stop;
  385.         int contorTraseu = 0;
  386.         int traseu[20];
  387.         while (parinte[temp] != start)
  388.         {
  389.             traseu[contorTraseu++] = temp;
  390.             temp = parinte[temp];
  391.         }
  392.         traseu[contorTraseu++] = temp;
  393.         traseu[contorTraseu++] = parinte[temp];
  394.         for (int i = contorTraseu - 1; i >= 0; i--)
  395.         {
  396.             cout<<nume[traseu[i]]<<" "<<adancime[traseu[i]] <<", ";
  397.         }
  398.     }
  399.     return gasit;
  400. }
  401.  
  402. void cautareIterativa(int start, int stop, int A[20][20], char *nume[20])
  403. {
  404.     int gasit = 0;
  405.     int limita = 1;
  406.     while((limita < 20) && (gasit == 0))
  407.     {
  408.         gasit = cautareLimApel(start,stop,A,nume, limita);
  409.         if (gasit == 0)
  410.             limita++;
  411.     }
  412.     if (gasit)
  413.         cout<<"solutia a fost gasita cu cautare iterativa si limita"<<limita<<endl;
  414. }
  415.  
  416.  
  417. int cautareCostUniform(int start, int stop, int A[20][20], char *nume[20])
  418. {
  419.  
  420.  
  421.     int cost[20];
  422.     cost[start]=0;
  423.     int nrNoduri = 0, contorViz = 0;
  424.  
  425.     int noduri[40];//orasele in asteptare
  426.     int viz[20];//orase deja vizitate
  427.     int parinte[20];//parinte[i]=j =>j este parintele lui i
  428.     int gasit = 0;
  429.     for (int i = 0; i < 20; i++)
  430.         viz[i] = 0;
  431.     viz[start] = 1;
  432.     noduri[0] = start;
  433.     nrNoduri++;
  434.     int contorpas = 0;
  435.  
  436.  
  437.     cout << "Pasul " << contorpas++ << ": ";
  438.     for (int i = 0; i < nrNoduri; i++)
  439.         cout << nume[noduri[i]] << " ";
  440.     cout << endl;
  441.  
  442.  
  443.     while (gasit == 0 && nrNoduri > 0)
  444.     {
  445.         int nod = noduri[0];
  446.         for (int i = 0; i < nrNoduri - 1; i++)
  447.             noduri[i] = noduri[i + 1];
  448.         nrNoduri--;
  449.         if (nod == stop)
  450.             gasit = 1;
  451.         else
  452.             for (int i = 0; i<20; i++)
  453.                 if ((A[nod][i] != 0) )  //
  454.                 {
  455.                     int costNou=cost[nod]+A[nod][i];
  456.                     if(viz[i]==0 ||(cost[i]>costNou))
  457.                     {
  458.                         viz[i] = 1;
  459.                         parinte[i] = nod;
  460.                         cost[i]=cost[nod]+A[nod][i];
  461.                         int poz=0;
  462.                         while((poz<nrNoduri)&&(cost[i]>cost[noduri[poz]]))
  463.                             poz++;
  464.                         cout<<poz<<endl;
  465.  
  466.                         for(int j=nrNoduri; j>poz; j--)
  467.                         {
  468.                             noduri[j]=noduri[j-1];
  469.                         }
  470.  
  471.                         noduri[poz]=i;
  472.  
  473.                         nrNoduri++;
  474.                     }
  475.  
  476.  
  477.                 }
  478.         cout << "Pasul " << contorpas++ << ": ";
  479.         for (int i = 0; i < nrNoduri; i++)
  480.             cout << nume[noduri[i]] << " ";
  481.         cout << endl;
  482.  
  483.     }
  484.     cout << endl;
  485.     int temp = stop;
  486.     int contorTraseu = 0;
  487.     int traseu[20];
  488.     while (parinte[temp] != start)
  489.     {
  490.         traseu[contorTraseu++] = temp;
  491.         temp = parinte[temp];
  492.     }
  493.     traseu[contorTraseu++] = temp;
  494.     traseu[contorTraseu++] = parinte[temp];
  495.     for (int i = contorTraseu - 1; i >= 0; i--)
  496.     {
  497.         cout << nume[traseu[i]] << " "<<cost[traseu[i]]<<", ";
  498.     }
  499.  
  500.     return 0;
  501. }
  502. int cautareGreedy(int start, int stop, int A[20][20], char *nume[20])
  503. {
  504.  
  505.  
  506.     int cost[20];
  507.     cost[start]=0;
  508.     int nrNoduri = 0, contorViz = 0;
  509.  
  510.     int noduri[40];//orasele in asteptare
  511.     int viz[20];//orase deja vizitate
  512.     int parinte[20];//parinte[i]=j =>j este parintele lui i
  513.     int gasit = 0;
  514.     for (int i = 0; i < 20; i++)
  515.         viz[i] = 0;
  516.     viz[start] = 1;
  517.     noduri[0] = start;
  518.     nrNoduri++;
  519.     int contorpas = 0;
  520.  
  521.  
  522.     cout << "Pasul " << contorpas++ << ": ";
  523.     for (int i = 0; i < nrNoduri; i++)
  524.         cout << nume[noduri[i]] << " ";
  525.     cout << endl;
  526.  
  527.  
  528.     while (gasit == 0 && nrNoduri > 0)
  529.     {
  530.         int nod = noduri[0];
  531.         for (int i = 0; i < nrNoduri - 1; i++)
  532.             noduri[i] = noduri[i + 1];
  533.         nrNoduri--;
  534.         if (nod == stop)
  535.             gasit = 1;
  536.         else
  537.             for (int i = 0; i<20; i++)
  538.                 if ((A[nod][i] != 0) )  //
  539.                 {
  540.                     int costNou=cost[nod]+A[nod][i];
  541.                     if(viz[i]==0)
  542.                     {
  543.                         viz[i] = 1;
  544.                         parinte[i] = nod;
  545.                         cost[i]=cost[nod]+A[nod][i];
  546.                         int poz=0;
  547.                         while((poz<nrNoduri)&&(H[i]>H[noduri[poz]]))
  548.                             poz++;
  549.                         cout<<poz<<endl;
  550.  
  551.                         for(int j=nrNoduri; j>poz; j--)
  552.                         {
  553.                             noduri[j]=noduri[j-1];
  554.                         }
  555.  
  556.                         noduri[poz]=i;
  557.  
  558.                         nrNoduri++;
  559.                     }
  560.  
  561.  
  562.                 }
  563.         cout << "Pasul " << contorpas++ << ": ";
  564.         for (int i = 0; i < nrNoduri; i++)
  565.             cout << nume[noduri[i]] << " ";
  566.         cout << endl;
  567.  
  568.     }
  569.     cout << endl;
  570.     int temp = stop;
  571.     int contorTraseu = 0;
  572.     int traseu[20];
  573.     while (parinte[temp] != start)
  574.     {
  575.         traseu[contorTraseu++] = temp;
  576.         temp = parinte[temp];
  577.     }
  578.     traseu[contorTraseu++] = temp;
  579.     traseu[contorTraseu++] = parinte[temp];
  580.     for (int i = contorTraseu - 1; i >= 0; i--)
  581.     {
  582.         cout << nume[traseu[i]] << " "<<cost[traseu[i]]<<", ";
  583.     }
  584.  
  585.     return 0;
  586. }
  587.  
  588. int cautareAStar(int start, int stop, int A[20][20], char *nume[20])
  589. {
  590.  
  591.  
  592.     int cost[20];
  593.     cost[start]=0;
  594.     int nrNoduri = 0, contorViz = 0;
  595.  
  596.     int noduri[40];//orasele in asteptare
  597.     int viz[20];//orase deja vizitate
  598.     int parinte[20];//parinte[i]=j =>j este parintele lui i
  599.     int gasit = 0;
  600.     for (int i = 0; i < 20; i++)
  601.         viz[i] = 0;
  602.     viz[start] = 1;
  603.     noduri[0] = start;
  604.     nrNoduri++;
  605.     int contorpas = 0;
  606.  
  607.  
  608.     cout << "Pasul " << contorpas++ << ": ";
  609.     for (int i = 0; i < nrNoduri; i++)
  610.         cout << nume[noduri[i]] << " ";
  611.     cout << endl;
  612.  
  613.  
  614.     while (gasit == 0 && nrNoduri > 0)
  615.     {
  616.         int nod = noduri[0];
  617.         for (int i = 0; i < nrNoduri - 1; i++)
  618.             noduri[i] = noduri[i + 1];
  619.         nrNoduri--;
  620.         if (nod == stop)
  621.             gasit = 1;
  622.         else
  623.             for (int i = 0; i<20; i++)
  624.                 if ((A[nod][i] != 0) )  //
  625.                 {
  626.                     int costNou=cost[nod]+A[nod][i];
  627.                     if(viz[i]==0 ||(cost[i]>costNou))
  628.                     {
  629.                         viz[i] = 1;
  630.                         parinte[i] = nod;
  631.                         cost[i]=cost[nod]+A[nod][i];
  632.                         int poz=0;
  633.                         while((poz<nrNoduri)&&((cost[i]+H[i])>(cost[noduri[poz]]+H[noduri[poz]])))
  634.                             poz++;
  635.                         cout<<poz<<endl;
  636.  
  637.                         for(int j=nrNoduri; j>poz; j--)
  638.                         {
  639.                             noduri[j]=noduri[j-1];
  640.                         }
  641.                         noduri[poz]=i;
  642.  
  643.                         nrNoduri++;
  644.                     }
  645.  
  646.  
  647.                 }
  648.         cout << "Pasul " << contorpas++ << ": ";
  649.         for (int i = 0; i < nrNoduri; i++)
  650.             cout << nume[noduri[i]] << " ";
  651.         cout << endl;
  652.  
  653.     }
  654.     cout << endl;
  655.     int temp = stop;
  656.     int contorTraseu = 0;
  657.     int traseu[20];
  658.     while (parinte[temp] != start)
  659.     {
  660.         traseu[contorTraseu++] = temp;
  661.         temp = parinte[temp];
  662.     }
  663.     traseu[contorTraseu++] = temp;
  664.     traseu[contorTraseu++] = parinte[temp];
  665.     for (int i = contorTraseu - 1; i >= 0; i--)
  666.     {
  667.         cout << nume[traseu[i]] << " "<<cost[traseu[i]]<<", ";
  668.     }
  669.  
  670.     return 0;
  671. }
  672. int main()
  673. {
  674.     char *nume[20] = { "Arad", "Zerind", "Sibiu", "Timisoara", "Oradea", "Fagaras", "Ramnicu Valcea", "Lugoj", "Bucuresti", "Pitesti", "Mehadia", "Drobeta", "Craiova", "Giurgiu", "Urziceni", "Hirsova", "Eforie", "Vaslui", "Iasi", "Neamt" };
  675.     //                   0         1        2          3          4          5              6            7          8           9         10          11        12         13         14          15         16        17       18      19
  676.  
  677.     int A[20][20] = { { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 },
  678.         { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 },
  679.         { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 },
  680.         { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 },
  681.         { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 },
  682.         { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 },
  683.         { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 },
  684.         { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 },
  685.         { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 },
  686.         { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 },
  687.         { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 },
  688.         { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 },
  689.         { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 },
  690.         { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 },
  691.         { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 },
  692.         { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 },
  693.         { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 },
  694.         { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 },
  695.         { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 },
  696.         { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 },
  697.     };
  698.  
  699.  
  700.     CreareMatrice(A);
  701.     CreareVector(H);
  702.     int start = 0, stop = 8;
  703.     cout << endl<<"Cautare in latime:" << endl;
  704.     latime(start, stop, A, nume);
  705.     cout << endl << endl<< "Cautare in adancime:" << endl;
  706.     adancime(start, stop, A, nume);
  707.     cout << endl << endl<< "Cautare in adancime limitata:" << endl;
  708.     adancimeLimitata(start,stop,A,nume,4);
  709.     cout << endl << endl<< "Cautare in adancime limitata:" << endl;
  710.     cautareIterativa(start,stop,A,nume);
  711.     cout << endl << endl<< "Cautare cost uniform:" << endl;
  712.     cautareCostUniform(start,stop,A,nume);
  713.     cout << endl << endl<< "Cautare Greedy:" << endl;
  714.     cautareGreedy(start,stop,A,nume);
  715.     cout << endl << endl<< "Cautare A*:" << endl;
  716.     cautareAStar(start,stop,A,nume);
  717.     _getch();
  718.     return 0;
  719. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement