48
правок
Изменения
Нет описания правки
<code>
Enum(s, i, r_i, G) counter := 0 //''количество уже найденных и выведенных элементов'' '''for''' v = 1 .. n '''do''' //''перебираем все вершины графа'' ''continue or find path'' //''недетерминировано выбираем переходить к следующей вершине или угадываем путь до данной'' counter++ write v //''выводим вершину, до которой угадали путь'' ''if'' counter ≥ r_i ''then'' //''нашли r_i вершин, удачно завершаем работу'' ACCEPT REJECT //''не нашли r_i вершин''
</code>
<code>
Next(s, i, r_i, G) r := 1 //''<tex>r_{i+1}</tex> хотя бы один, так как <tex>s \in R_{i + 1}</tex>'' '''for''' v = 1 .. n; <tex>v \neq s</tex> '''do''' //''перебираем все вершины графа, кроме s -- это кандидаты на попадание в <tex>R_{i + 1}</tex>'' '''for''' u : (u,v)∈E '''do''' //''перебираем все ребра, входящие в v'' Enum(s, i, r_i, G) //''перечисляем все вершины из <tex>R_i</tex>'' '''if''' u in output '''then''' //''если u одна из них, то <tex>v \in R_{i + 1}</tex>'' r++ //''увеличиваем количество найденных вершин и переходим к рассмотрению следующего кандидата'' break write r
</code>
<code>
NONCON(G, s, t) r_n := 1 //''<tex>r_0</tex>'' '''for''' i = 0..n-2 '''do''' //''Вычисляем <tex>r_{n - 1}</tex>'' r_n := Next(s, i, r_n, G) Enum(s, n - 1, r_n, G) //''Перечисляем вершины из <tex>R_{n - 1}</tex>'' '''if''' t in output '''then''' //''Если t была перечислена то t достижима и выдаем REJECT, иначе ACCEPT'' REJECT '''else''' ACCEPT
</code>