Изменения

Перейти к: навигация, поиск

Теорема Иммермана

54 байта добавлено, 16:29, 15 апреля 2010
Нет описания правки
<code>
Enum(s, i, <tex>r_i</tex>, G)
counter := 0 //''количество уже найденных и выведенных элементов''
'''for''' v = 1 .. n '''do''' //''перебираем все вершины графа''
counter++
yield return v //''выдаем вершину, до которой угадали путь''
''if'' counter <tex>\ge r_i </tex> ''then'' //''нашли <tex>r_i </tex> вершин, принимаем и завершаем работу''
ACCEPT
REJECT //''не нашли <tex>r_i </tex> вершин, отклоняем''
</code>
<code>
Next(s, i, <tex>r_i</tex>, 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 Enum(s, i, <tex>r_i</tex>, G) '''then''' //''если u одна из них, то <tex>v \in R_{i + 1}</tex>''
r++ //''увеличиваем количество найденных вершин и переходим к рассмотрению следующего кандидата''
break
write return r
</code>
'''for''' i = 0..n-2 '''do''' //''Вычисляем <tex>r_{n - 1}</tex>''
<tex>r_n</tex> := Next(s, i, <tex>r_n</tex>, G)
Enum(s, n - 1, <tex>r_n</tex>, G) //''Перечисляем вершины из <tex>R_{n - 1}</tex>'' '''if''' t in output Enum(s, n - 1, <tex>r_n</tex>, G) '''then''' //''Если t была перечислена то t достижима и выдаем REJECT, иначе ACCEPT''
REJECT
'''else'''
48
правок

Навигация