TIL
20220512_TIL
Hoooon22_코딩거북이_
2022. 5. 12. 01:36
728x90
Today I Learn |
1. NFA to DFA - normal한 NFA to DFA 중 reconstruct fa까지 진행 |
작성한 Class NFA 코드
class NFA
{
public Dictionary<string, Dictionary<string, string[]>> nfa_dic = new Dictionary<string, Dictionary<string, string[]>>();
public int s; // number of states
public int t; // number of transitions
public string first_state; // first state
public string[] final_state; // final states
public void Enter_nfa()
{
// Input states and transitions
Console.Write("Enter the number of states: ");
s = int.Parse(Console.ReadLine());
Console.Write("Enter the number of transitions: ");
t = int.Parse(Console.ReadLine());
// Enter name of state and transition
for (int i = 0; i < s; i++) // state
{
Console.Write("\n" + i + ". state name: ");
string state = Console.ReadLine();
Dictionary<string, string[]> t_dic = new Dictionary<string, string[]>(); // 임시 저장
for (int j = 0; j < t; j++) // transition
{
Console.Write("\n" + i + ". transition name: ");
string transition = Console.ReadLine();
Console.Write("next states from state " + state + " through " + transition + ": ");
string next_state = Console.ReadLine();
t_dic.Add(transition, next_state.Split(' '));
}
nfa_dic.Add(state, t_dic); // add nfa
}
// Enter First state
Console.Write("first states: ");
first_state = Console.ReadLine();
// Enter Final state
Console.Write("final states: ");
final_state = Console.ReadLine().Split(' ');
}
public void Prinf_nfa()
{
Console.WriteLine("\nNFA => ");
foreach (var pair1 in nfa_dic)
{
Console.Write("Key: {0}, Value: ", pair1.Key);
foreach (var pair2 in pair1.Value)
{
Console.Write("{0}-[{1}] ", pair2.Key, String.Join(", ", pair2.Value)); ;
}
Console.WriteLine();
}
}
}