also es muss einen nichtdeterministischen automaten in ein deterministischen automaten umwandeln... man gibt eine Überführungstabelle(Zustandstafel) ein und dadurch muss man einen deterministischen Automaten verwandeln... dann muss man noch ne syntaxanalyse machen
Wenn es ein allgem. Automat sein soll, dann muß er zuerst mal Methoden für das verwendete Alphabet bereitstellen, des weiteren Methoden zur Zustandstafel (entweder als Ganzes per Array oder Map übergeben oder einzeln mit z.B. AddState(from, to)).
Was genau meinst du mit Syntaxanalyse? Ein Check-Funktion, welche überprüft, ob eine Buchstabenfolge der Automatensyntax entspricht?
also laut dieser beschreibung, wäre eine funktion für den nichtdeterministischen automat zum beispiel so realisierbar:
C++:
#include <iostream>
void ndetAuto(int max) { std::srand(time(NULL)); int array[max]; for (int i=0; i <= max; ++i) { array[i] = rand() % 2; if (i == max) { array[i] = 1; } std::cout << array[i]; } std::cout << std::endl; return; }
int main() { int max; std::cout << "Geben Sie eine maximale Gr\x94""\xe1""e des Arrays ein: "; std::cin >> max; ndetAuto(max); }
falls jetzt kein code erwünscht war/ist sollte der thread evtl. ins offtopic verschoben werden -- ...um etwas zu verstehen muß man wissen wie es funktioniert...Dieser Post wurde am 07.03.2005 um 18:33 Uhr von enno-tyrant editiert.
habe ich schon oft vernommen, aber es funktioniert dennoch. man kann es ja auch in ein dynamisches array umschreiben (falls ein compiler probleme damit haben sollte)
C++:
... std::srand(time(NULL)); int *array = newint [max]; for (int i=0; i <= max; ++i) ... std::cout << std::endl; delete [] array; return; ... ndetAuto(max-1); ...
-- ...um etwas zu verstehen muß man wissen wie es funktioniert...Dieser Post wurde am 08.03.2005 um 10:31 Uhr von enno-tyrant editiert.
jo stimmt, war tatsächlich deaktiviert -- ...um etwas zu verstehen muß man wissen wie es funktioniert...Dieser Post wurde am 08.03.2005 um 11:01 Uhr von enno-tyrant editiert.