Witam, mam pewien projekt do zrobienia w C++ tylko mam duuuzy kłopot z wymyśleniem algorytmu. Mam na przykład sytuację:
@>aB
@>fD
A>cB
A>dE
B>bA
C>eD
D>gE
D>hG
E>aD
G>dH
G>b
H>eG
Ten ciąg znaczków powyżej to jest lista reguł do zastosowania. Te reguły są przedstawione za pomocą tablicy dwuwymiarowej: reguly[ilość_reguł][2], znak ”>” nie zalicza się do budowy reguły. Program ma działać w taki sposób, że począwszy od symbolu startowego którym jest '@', stosujemy np. losowo reguły tak aby w ostateczności dostać wyrażenie składające się tylko z małych literek, np: @->fD->fhG->fhdH->fhdeG->fhdeb. Wszystko mi pięknie działa...podstawianie reguł, tworzenie ostatecznego wyrażenia złożonego z małych literek tylko mam jeden kłopot. Jeśli reguły są źle skonstruowane, dzieje się tak, że wykonując kolejne podstawienia, dochodzi do zapętlenia - czyli następuje podstawienie znaków i tak w kółko, czyli nie ma skończonego wyrażenia. No i pytanie moje brzmi, czy może ktoś z Was zna algorytm na wyznaczenie czy zbiór reguł jest skończony, czy też nie? Proszę bardzo o pomoc...Z góry dziękuję za wszelkie próby rozwiązania tego w sumie ciekawego problemu!
P.S. Sorki za umieszczenie tego samego problemu w temacie "1 rok informatyki - algorytmy/projekty "