cykl Eulera - program wyłącza się przy dużym grafie

0

Witam.
Mam problem z programem, który wyszukuje cykl Eulera w grafie. Utworzenie macierzy, sprawdzenie warunków, poprawienie grafu (aby miał parzysty stopień wierzchołka) działa poprawnie nawet dla większych grafów, ale sama funkcja szukania cyklu wyłącza się (bez żadnego komunikatu o błędzie) przy grafie reprezentowanym przez macierz sąsiedztwa o rozmiarze 500x500.
Funkcja wygląda tak:

  void DFSEuler(int wierzcholek)
  {
    int i=0;
    while(i<rozmiar)
    {
      while((macierz[wierzcholek][i]!=1)&&(i<rozmiar))
      {
        i++;
      }
      if(i<rozmiar)
      {
        macierz[wierzcholek][i]=0;
        macierz[i][wierzcholek]=0;
     
        DFSEuler(i);
      }
    }
    printf("%d, ",wierzcholek); 
  }

I wywoływana jest dla pierwszego wierzchołka grafu.
Ma ktoś pomysł dlaczego program się wyłącza?

0

obstawiam zbyt mały rozmiar stosu. teoretycznie 250000 * (4 + część rejestrów (bodajże IP, BP i SP)) = przynajmniej 4MB potrzebujesz w skrajnie negatywnym przypadku.

0

Może po uproszczeniu pójdzie ?

void DFSEuler(int wierzcholek)
  {
   int i;
   for(i=0;i<rozmiar;++i)
     {
      if(macierz[wierzcholek][i]==1)
        {
         macierz[wierzcholek][i]=0;
         macierz[i][wierzcholek]=0; 
         DFSEuler(i);
       }
     }
   printf("%d, ",wierzcholek); 
  }
0

Dzięki. To rzeczywiście kwestia przepełnionego stosu. Po powiększeniu udało się znaleźć cykl dla większej ilości wierzchołków.

1 użytkowników online, w tym zalogowanych: 0, gości: 1