Przeglądam teorię obliczeń dla zabawy i to pytanie nęka mnie od dłuższego czasu (zabawne, że nie pomyślałem o tym, gdy nauczyłem się teorii automatu w mojej szkole licencjackiej). Więc „dlaczego” dokładnie badamy deterministyczne i niedeterministyczne automaty skończone (DFA / NFA)? Oto kilka odpowiedzi, które wymyśliłem po monologowaniu, ale wciąż nie widzę ich ogólnego wkładu w moment „aha”:
- Studiować, czym są i nie są w stanie np. Mieć ograniczeń
- Dlaczego?
- Ponieważ są one podstawowymi modelami obliczeń teoretycznych i stanowiłyby podstawę innych, bardziej wydajnych modeli obliczeń.
- Co czyni je „podstawowymi”? Czy to dlatego, że mają tylko jeden bit pamięci i przejścia stanu?
- OK, a co z tego? W jaki sposób wszystko to przyczynia się do odpowiedzi na pytanie dotyczące obliczalności? Wydaje się, że maszyny Turinga naprawdę dobrze to rozumieją i istnieją „mniejsze” modele obliczeń, takie jak PDA, DFA / NFAs / Regexes itp. Ale jeśli nie znamy FA, to na czym im brakuje?
Więc chociaż „rozumiem” do pewnego stopnia, nie jestem w stanie odpowiedzieć sobie na to pytanie? Jak najlepiej wytłumaczysz „po co studiować D / N-FA”? Na jakie pytanie chcą odpowiedzieć? Jak to pomaga i dlaczego jest to pierwsza rzecz nauczana w teorii automatów?
PS: Mam świadomość różnych aplikacji leksykograficznych i dopasowywania wzorców, które można zaimplementować jako takie. Nie chcę jednak wiedzieć, do czego można go używać praktycznie, ale jaki był powód jego użycia / wynalazku / projektu podczas kulminacji studiowania teorii obliczeń. Historycznie rzecz biorąc, co doprowadziło nas do tego i do czego to ma prowadzić zrozumienie „aha”? Jeśli miałbyś wyjaśnić ich znaczenie studentom CS dopiero rozpoczynającym naukę teorii automatów, jak to zrobiłeś?