Witam Wszystkich!

Jak widać w temacie mam pewien problem :(

Otóż muszę wykonać pewien projekt na ćwiczenia, ale nie mogę sobie z tym dać rady.
Dlatego chciałbym poprosić Was o pomoc, bo dla takich ludzi jak większość tu obecnych to pewnie będzie małe piwko.

Treść zadania wygląda mniej więcej tak:
Mam wygenerować powiedzmy 10000 grafów G(n,k) i obliczyć prawdopodobieństwo, że najkrótszy cykl w grafie ma długość L.

Przy wykonywaniu tego projektu mogłem się posłużyć gotowymi algorytmami, które dostaliśmy. I ja jeden z tych algorytmów skróciłem do potrzeb swojego projektu. Otrzymałem gotowy algorytm, który generuje mi właśnie takie grafy jak chce, czyli model G(n,k). Dla osób nie wiedzących o co lata w grafach (wsumie dla mnie tez :) )powiem że „n” jest liczbą wierzchołków grafu, natomiast „k” jest liczbą krawędzi tego grafu, a „rep” to liczba która mówi ile grafów mam wygenerować. Żeby lepiej to zrozumieć zamieszczam taki prościutki rysuneczek grafu:

[code]http://www.diesel.konin.lm.pl/Graf.jpg[/code]

A teraz wracając do zadania, jeśli mam obliczyć najkrótszy cykl w grafie to jest nim trójkąt. Algorytm, który skróciłem do swoich potrzeb oblicza właśnie liczbę trójkątów oraz czworokątów. Tylko teraz pozostaje problem jak obliczyć to prawdopodobieństwo. Dlatego wysłałem maila do swojego wykładowcy i udzielił mi On takiej odpowiedzi:

Generalne w grafie najbardziej pradwopodobnym cyklem będzie trójkąt.

Aby obliczyć pradopodobnieństwo robi pan 10000 losowań dla danego n, k
a następnie:

) wyznacza liczbę trójkąkątów c3 (wystarczy odnaleźć tylko jeden) i jeżeli jest większa od zera zwiększyć odpowiedni licznik
2.) jeżeli c3 = 0, to wyznacz liczbę czworokątów (wystarczy odnaleźć tylko jeden) i jeżeli jest większa od zera zwiększ odopwiedni licznik
3.) jeżeli c3 i c4 =0 - może to oznaczać że w grafie nie mam cykli lub są one dłuższe - trzeba to zweryfikować za pomoca procedury OnCycle</li> </ol>
jeżeli brak jest cykli zwiększamy licznik na ustalonej (wybranej jako domyślna) pozycji np. 1
W wyniku dostanie Pan pewien licznik określający rozkład w danego próbce liczby grafów z minimalnym cyklem o długości L.</li> </ol>

Modyfikacja procedury Oncycle w taki spowób aby nie zliczała cykli a kończyłaby swoje działanie po napotkaniu pierwszego cyklu o określonej długości zmieszyła by średnią złożoność i czas potrzebny na wyznaczenie rozkładu

Więc jeśli ja dobrze kombinuje to trzeba chyba wykonać jakąś pętle FOR która będzie sprawdzała czy w danym grafie jest cykl o długości 3 (czyli trójkąt), jeśli jest to pewnie zwięlszyć jakiś licznik o 1 i przejść do następnego grafu z takim samym zadaniem. Pisze chyba bo właśnie tego nie mam pojęcia jak wykonać dlatego Was proszę o pomoc. Jeśli chodzi o ten już po części wykonany projekt (algorytm) to znajduje się on tutaj:

[code]http://www.diesel.konin.lm.pl/Cykle.pas[/code]

Funkcja zliczania trójkątów w tym algorytmie to: triangles, a czworokątów to: cykl4TF

Acha ja nie wiem jeszcze o co chodzi z tą procedurą OnCykle o której wspomniał mój wykładowca w swoim mailu (możę to jakaś gotowa procedura, ale ja o niej nic nie wiem), wiec jak co to pomóżcie wykonać chociaż te 2 pierwsze punkty z odpowiedzi mojego wykładowcy, żebym po prostu coś miał.

No trochę się rozpisałem ale mam nadzieje że przez to będziecie mogli lepiej zrozumieć jaki mam problem.

PS. Jeśli by można to fajnie by było gdyby ktoś mi pomógł pomógł z tym w miare szybko bo projekt muszę oddać do końca roku :( a ja jak zwykle bardzo szybko sie do tego zabrałem :(