Skip to content

A comprehensive project focused on various concepts in Automata Theory, including the conversion and simplification of automata, language operations, and grammar verification. It covers both finite automata and pushdown automata, demonstrating practical applications of theoretical principles in computer science.

Notifications You must be signed in to change notification settings

EhsanAhmadpoor/TLA-Projects

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 

Repository files navigation

Theory of Languages and Automata Project

Overview

This project is part of my Theory of Languages and Automata course. It covers foundational topics such as finite automata, regular languages, grammars, and pushdown automata. The project is divided into two parts: a half-term project and a final project, each containing multiple phases that explore different aspects of automata theory and formal languages.

Half-Term Project

The half-term project focuses on finite automata (FA) and regular languages. It is broken down into the following phases:

1. Convert NFA to DFA

In this phase, we convert a Non-deterministic Finite Automaton (NFA) to a Deterministic Finite Automaton (DFA). The conversion involves constructing a DFA that accepts the same language as the NFA.

2. Simplification of DFA

The DFA obtained from the first phase is simplified by removing unnecessary states and transitions, resulting in a minimal DFA that accepts the same language.

3. Check if a String is Accepted on a FA

In this phase, the program checks whether a given string is accepted by the finite automaton (DFA or NFA).

4. Perform an Operation on a Regular Language

We perform operations (such as union, intersection, complement) on regular languages and represent the resulting languages as finite automata.

5. Convert FA to Regex using Arden's Lemma

This phase involves converting a finite automaton (FA) into an equivalent regular expression using Arden's Lemma.

Final Project

The final project shifts focus to context-free grammars (CFGs) and pushdown automata (PDA), expanding the scope to include more complex computational models.

1. Check if a String is Accepted on a Grammar

We verify whether a given string belongs to the language generated by a context-free grammar (CFG).

2. Check if a String is Accepted on a PDA

This phase involves checking whether a string is accepted by a Pushdown Automaton (PDA), a more powerful computational model compared to FA.

3. Convert NPDA to CFG

In this phase, we convert a Non-deterministic Pushdown Automaton (NPDA) into an equivalent Context-Free Grammar (CFG).

About

A comprehensive project focused on various concepts in Automata Theory, including the conversion and simplification of automata, language operations, and grammar verification. It covers both finite automata and pushdown automata, demonstrating practical applications of theoretical principles in computer science.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published