Я пытаюсь написать программу сравнения DFA. Но я не знаю, как создать результирующий массив.
Мой код:
$alphabet = array(0,1,2,3,4,5,6,7,8,9);
$states1 = array('A','B');
$automata1[0]['A'] = 'B';
$automata1[0]['B'] = 'B';
$automata1[1]['A'] = 'A';
$automata1[1]['B'] = 'A';
$automata1[2]['A'] = 'B';
$automata1[2]['B'] = 'B';
$automata1[3]['A'] = 'A';
$automata1[3]['B'] = 'A';
$automata1[4]['A'] = 'B';
$automata1[4]['B'] = 'B';
$automata1[5]['A'] = 'A';
$automata1[5]['B'] = 'A';
$automata1[6]['A'] = 'B';
$automata1[6]['B'] = 'B';
$automata1[7]['A'] = 'A';
$automata1[7]['B'] = 'A';
$automata1[8]['A'] = 'B';
$automata1[8]['B'] = 'B';
$automata1[9]['A'] = 'A';
$automata1[9]['B'] = 'A';
$acceptation1 = array('B');
$start1 = 'A';
$sates2 = array(0,1,2);
$automaat2[0][0] = 0;
$automata2[0][1] = 1;
$automata2[0][2] = 2;
$automata2[1][0] = 1;
$automata2[1][1] = 2;
$automata2[1][2] = 0;
$automata2[2][0] = 2;
$automata2[2][1] = 0;
$automata2[2][2] = 1;
$automata2[3][0] = 0;
$automata2[3][1] = 0;
$automata2[3][2] = 2;
$automata2[4][0] = 1;
$automata2[4][1] = 2;
$automata2[4][2] = 0;
$automata2[5][0] = 2;
$automata2[5][1] = 0;
$automata2[5][2] = 1;
$automata2[6][0] = 0;
$automata2[6][1] = 1;
$automata2[6][2] = 2;
$automata2[7][0] = 1;
$automata2[7][1] = 2;
$automata2[7][2] = 0;
$automata2[8][0] = 2;
$automata2[8][1] = 0;
$automata2[8][2] = 1;
$automata2[9][0] = 0;
$automata2[9][1] = 1;
$automata2[9][2] = 2;
$acceptation2 = array(2);
$start2 = 1;
foreach ($alphabet as $sign) {
$result[$sing][$start1.'x'.$start2] = $automata1[$sign][$start1].'x'.$automata2[$sign][$start2];
}
На первом проходе строка будет принимать значение начальных состояний обоих графиков. На последующих итерациях строки таблицы должны быть заполнены уникальными значениями, которые будут заполнены следующей строкой.
Пример:
Как вы пишете цикл, который будет создавать массив состояний?
Задача ещё не решена.
Других решений пока нет …