Uploaded by Артур Курбангалеев

Дискретная математика

advertisement
Полином Жегалкина
Замыкание. Основные замкнутые классы.
Конъюнкция вида 𝑘 = 𝑥𝑖1 𝑥𝑖2 𝑥𝑖3 … 𝑥𝑖𝑛 называется монотонной
конъюнкцией (отсутствует отрицание переменных).
Полиномом Жегалкина от n переменных называется сумма по модулю
2 различных монотонных конъюнкций, составленных из этих
переменных.
(𝑥1 , … , 𝑥𝑛 ) = 𝑘𝑚1 ⊕ 𝑘𝑚2 ⊕ … ⊕ 𝑘𝑚𝑙 , 𝑙 – длина полинома.
Жегалкин рассматривал только операции конъюнкции и сложения по
модулю 2.
В алгебре с этими операциями справедливо:
𝑥⊕𝑦 =𝑦⊕𝑥
𝑥(𝑦 ⊕ 𝑧) = 𝑥𝑦 ⊕ 𝑥𝑧
𝑥 ⊕ 1 = 𝑥̅
𝑥⊕0 =𝑥
Теорема: для любой булевой функции существует полином
Жегалкина, представляющий данную функцию и причём только один.
Доказательство: существование следует из того, что для любой
булевой функции можно построить СДНФ, далее дизъюнкцию и
отрицание можно заменить на конъюнкцию и сложение по модулю 2.
Докажем единственность. Рассмотрим множество булевых функций от
𝑛
𝑛 переменных - 𝐵𝑛 . Число булевых функций равно 22 . Покажем, что
𝑛
число полиномов Жегалкина от 𝑛 переменных тоже 22 и тогда, так
как для любой функции существует полином Жегалкина, для каждой
функции такой полином будет единственный.
Общий вид полинома Жегалкина от трёх переменных:
𝑃(𝑥, 𝑦, 𝑧) = 𝑎0 ⊕ 𝑎1 𝑥 ⊕ 𝑎2 𝑦 ⊕ 𝑎3 𝑧 ⊕ 𝑎12 𝑥𝑦 ⊕ 𝑎13 𝑥𝑧 ⊕ 𝑎23 𝑦𝑧
⊕ 𝑎123 𝑥𝑦𝑧
𝑎𝑖 ∈ {0,1}; {1,2,3} − 2𝑛 перестановок
Полином Жегалкина от 𝑛 переменных мы представим как
Рассмотрим множество 𝑚 булевых функций 𝑚 ⊆ 𝐵
Замыканием класса 𝑚 называется множество функций,
представляющих собой суперпозиции различных функций класса 𝑚
(само 𝑚 входит). Обозначение: [𝑚]
Свойства:
1. [∅] = ∅
2. 𝑚 ⊆ [𝑚]
3. [[𝑚]] = [𝑚]
4. 𝑚1 ⊆ 𝑚2 ⇒ [𝑚1 ] ⊆ [𝑚2 ]
5. [𝑚1 ] ∪ [𝑚2 ] ⊆ [𝑚1 ∪ 𝑚2 ]
Класс функций 𝑚 называется замкнутым, если он совпадает со своим
замыканием. 𝑚 = [𝑚] ⇒ 𝑚 - замкнутый.
Основные замкнутые классы:
1. Класс 𝑇0 (булевы функции, сохраняющие константу 0)
𝑛
1
22
𝑇0 = {𝑓 ∈ 𝐵|𝑓(0, … ,0) = 0}; |𝑇0𝑛 | = |𝐵𝑛 | =
2
2
Лемма: класс 𝑇0 замкнут.
Доказательство: возьмём 𝑛 + 1 функцию: 𝑓(𝑥1 , … , 𝑥𝑛 ) ∈ 𝑇0 и 𝑛
функций от 𝑚 переменных вида 𝑔𝑖 (𝑦1 , … , 𝑦𝑚 ) ∈ 𝑇0
𝐹(𝑦1 , … , 𝑦𝑚 ) = 𝑓(𝑔1 (𝑦1 , … , 𝑦𝑚 ), … , 𝑔𝑛 (𝑦1 , … , 𝑦𝑚 ))
𝐹(0, … , 0) = 𝑓(𝑔1 (0, … , 0), … , 𝑔𝑛 (0, … , 0)) = 𝑓(0, … ,0) = 0
2. Класс 𝑇1 (булевы функции, сохраняющие константу 1)
𝑛
1
22
𝑇1 = {𝑓 ∈ 𝐵|𝑓(1, … ,1) = 1}; |𝑇1𝑛 | = |𝐵𝑛 | =
2
2
Лемма: класс 𝑇1 замкнут.
Доказательство: возьмём 𝑛 + 1 функцию: 𝑓(𝑥1 , … , 𝑥𝑛 ) ∈ 𝑇1 и 𝑛
функций от 𝑚 переменных вида 𝑔𝑖 (𝑦1 , … , 𝑦𝑚 ) ∈ 𝑇1
𝐹(𝑦1 , … , 𝑦𝑚 ) = 𝑓(𝑔1 (𝑦1 , … , 𝑦𝑚 ), … , 𝑔𝑛 (𝑦1 , … , 𝑦𝑚 ))
𝐹(1, … , 1) = 𝑓(𝑔1 (1, … , 1), … , 𝑔𝑛 (1, … , 1)) = 𝑓(1, … ,1) = 1
3. Класс S (самодвойственные функции).
Функция называется самодвойственной, если она совпадает со своей
двойственной (на противоположенном наборе принимает
противоположенное значение).
𝑛−1
𝑛−1
𝑆 = {𝑓 ∈ 𝐵|𝑓 = 𝑓 ∗ }; |𝑆| = 𝐴̅22
= 22
т.к. число слагаемых равно числу подмножество множества из 𝑛
элементов, то оно будет равно 2𝑛 . Каждый 𝑎𝑖1 , … , 𝑎𝑖𝑘 ∈ {0,1} поэтому
𝑛
𝑛
число полиномов Жегалкина совпадает с числом 𝐴2̅2 = 22 .
Лемма: класс 𝑆 замкнут.
Доказательство: возьмём 𝑛 + 1 функцию: 𝑓(𝑥1 , … , 𝑥𝑛 ) ∈ 𝑆 и 𝑛 функций
от 𝑚 переменных вида 𝑔𝑖 (𝑦1 , … , 𝑦𝑚 ) ∈ 𝑆
𝐹(𝑦1 , … , 𝑦𝑚 ) = 𝑓(𝑔1 (𝑦1 , … , 𝑦𝑚 ), … , 𝑔𝑛 (𝑦1 , … , 𝑦𝑚 ))
̅ 1 (𝑦
𝐹 ∗ (𝑦1 , … , 𝑦𝑚 ) = 𝑓 (𝑔
̅̅̅,
𝑦𝑚 … , 𝑔𝑛 (𝑦
̅̅̅,
𝑦𝑚
1 … , ̅̅̅̅),
1 … , ̅̅̅̅))
̅
̅̅̅
̅̅̅
= 𝑓 (𝑔1 (𝑦
̅̅̅,
𝑦𝑚 … , 𝑔𝑛 (𝑦
̅̅̅,
𝑦𝑚
1 … , ̅̅̅̅),
1 … , ̅̅̅̅))
∗
∗
̅
̅̅̅̅
̅̅̅̅̅
= 𝑓 (𝑔1 (𝑦1 , … , 𝑦𝑚 ), … , 𝑔𝑛 (𝑦1 , … , 𝑦𝑚 ))
̅ ̅̅̅(𝑦
= 𝑓 (𝑔
𝑔𝑛 1 , … , 𝑦𝑚 ))
1 1 , … , 𝑦𝑚 ), … , ̅̅̅(𝑦
∗
= 𝑓 (𝑔1 (𝑦1 , … , 𝑦𝑚 ), … , 𝑔𝑛 (𝑦1 , … , 𝑦𝑚 ))
= 𝑓(𝑔1 (𝑦1 , … , 𝑦𝑚 ), … , 𝑔𝑛 (𝑦1 , … , 𝑦𝑚 )) = 𝐹(𝑦1 , … , 𝑦𝑚 )
⟹ 𝐹∈𝑆
Лемма: (о несамодвойственной функции)
Пусть 𝑓 – несамодвойственная функция (𝑓 ∉ 𝑆), тогда из неё путём
подстановки вместо её переменных 𝑥1 , … , 𝑥𝑛 выражение 𝑥 или 𝑥̅
можно получить несамодвойственную функцию одной переменной,
т.е. константу.
0
Доказательство: 𝑓 ∈ 𝑆 ⟼ 𝑓(𝑥) = [
1
𝑓 ∉ 𝑆 ⟹ ∃(𝛼1 , … , 𝛼𝑛 ): 𝑓(𝛼1 , … , 𝛼𝑛 ) ≠ 𝑓 ∗ (𝛼1 , … , 𝛼𝑛 )
⟹ 𝑓(𝛼1 , … , 𝛼𝑛 ) = 𝑓(𝛼
̅̅̅,
𝛼̅𝑛̅)
1 … , ̅̅
С использованием набора (𝛼1 , … , 𝛼𝑛 ) формируем функцию
𝑥
𝜑𝑖 (𝑥) = 𝑥 𝛼𝑖 , это функция от одной переменной 𝜑𝑖 (𝑥) = [
𝑥̅
Формируем функцию 𝜓(𝑥) = 𝑓(𝜑1 (𝑥), … , 𝜑𝑛 (𝑥)) = 𝑓(𝑥 𝛼1 , … , 𝑥 𝛼𝑛 )
Покажем, что данная функция является константой.
𝜓(0) = 𝑓(0𝛼1 , … , 0𝛼𝑛 ) = 𝑓(𝛼
̅̅̅,
̅̅̅𝑛̅) = 𝑓(𝛼1 , … , 𝛼𝑛 ) = 𝑓(1𝛼1 , … , 1𝛼𝑛 )
1 …,𝛼
= 𝜓(1)
4. Класс 𝑀 (монотонные функции)
Рассмотрим 2 набора 𝛼 = (𝛼1 , … , 𝛼𝑛 ) и 𝛽 = (𝛽1 , … , 𝛽𝑛 ) из 𝐸 𝑛 ; будем
говорить, что 𝛼 ≼ 𝛽 (𝛼 предшествует 𝛽), если 𝛼𝑖 ≤ 𝛽𝑖
Таким образом на множестве 𝐸 𝑛 мы ввели бинарное отношение
предшествования, которое является отношением частичного порядка.
Булева функция 𝑓: 𝐸 𝑛 → 𝐸 называется монотонной, если
∀𝛼, 𝛽 ∈ 𝐸 𝑛 : 𝛼 ≼ 𝛽 ⇒ 𝑓(𝛼) ≤ 𝑓(𝛽)
Лемма: класс 𝑀 является замкнутым.
Доказательство: возьмём 𝑛 + 1 функцию: 𝑓(𝑥1 , … , 𝑥𝑛 ) ∈ 𝑀 и 𝑛
функций от 𝑚 переменных вида 𝑔𝑖 (𝑦1 , … , 𝑦𝑚 ) ∈ 𝑀
𝐹(𝑦1 , … , 𝑦𝑚 ) = 𝑓(𝑔1 (𝑦1 , … , 𝑦𝑚 ), … , 𝑔𝑛 (𝑦1 , … , 𝑦𝑚 ))
Рассмотрим 2 набора 𝛼 = (𝛼1 , … , 𝛼𝑚 ) и 𝛽 = (𝛽1 , … , 𝛽𝑚 ), такие, что
𝛼 ≼ 𝛽; так как 𝑔 ∈ 𝑀 𝑔𝑖 (𝛼1 , … , 𝛼𝑚 ) ≤ 𝑔𝑖 (𝛽1 , … , 𝛽𝑚 )
Обозначим значения 𝑔𝑖 (𝛼1 , … , 𝛼𝑚 ) = 𝛾𝑖 ; 𝑔𝑖 (𝛽1 , … , 𝛽𝑚 ) = ∆𝑖 , то есть
𝛾 = (𝛾1 , … , 𝛾𝑚 ), ∆= (∆1 , … , ∆𝑚 ) и 𝛾 ≼ ∆ по предположению.
В силу монотонности 𝑓
𝐹(𝛼1 , … , 𝛼𝑚 ) = 𝑓(𝛾) ≤ 𝑓(∆) = 𝐹(𝛽1 , … , 𝛽𝑚 )
Таким образом, из того, что 𝛼 ≼ 𝛽 мы получили 𝐹(𝛼) ≤ 𝐹(𝛽), значит 𝐹
- монотонна.
Лемма: (о немонотонной функции)
Если функция 𝑓 не является монотонной, то из неё путём подстановки
вместо её переменных 𝑥1 , … , 𝑥𝑛 констант 0,1 и функции 𝑥 можно
получить немонотонную функцию одной переменной, т.е. константу.
Доказательство: рассмотрим функцию 𝑓, тогда ∃𝛼1 , 𝛽1 ∈ 𝐸 𝑛 : 𝛼 1 ≼ 𝛽1 ∧
𝑓(𝛼1 ) > 𝑓(𝛽1 ). Покажем, что в этом случае существуют 2 соседних
набора 𝛼 и 𝛽: 𝛼 ≼ 𝛽 ∧ 𝑓(𝛼) > 𝑓(𝛽)
1) Если 𝛼 1 и 𝛽1 уже соседние, то 𝛼 = 𝛼1 , 𝛽 = 𝛽1
2) Пусть 𝛼 1 и 𝛽1 не соседние и пусть они отличаются на t координат (у
𝛼 - это 0, а у 𝛽 - это 1). Строим цепочку соседних наборов. Переходим
с помощью соседних наборов. ∃(𝑡 − 1) набор 𝛼1 , … , 𝛼 𝑡 : 𝛼 1 ≼ 𝛼 2 ≼
⋯ ≼ 𝛼 𝑡 ≼ 𝛽1 и каждая пара связана соседством. При чём, так как
𝑓(𝛼1 ) > 𝑓(𝛽1 ), то по хотя бы на одной паре двух соседних наборов,
которые обозначаются как 𝛼 и 𝛽 выполняется такое же неравенство
𝑓(𝛼) > 𝑓(𝛽). Предположим, что полученные нами 𝛼 и 𝛽 отличаются
по s-той координате, т.е. 𝛼 = (𝛼1 , … , 𝛼𝑠−1 , 0, 𝛼𝑠+1 , … , 𝛼𝑛 ) и 𝛽 =
(𝛼1 , … , 𝛼𝑠−1 , 1, 𝛼𝑠+1 , … , 𝛼𝑛 ). Рассмотрим функцию 𝜑(𝑥) =
𝑓(𝛼1 , … , 𝛼𝑠−1 , 𝑥, 𝛼𝑠+1 , … , 𝛼𝑛 ), тогда, 𝜑(0) = 𝑓(𝛼) > 𝑓(𝛽) = 𝜑(1). Мы
получили, что 0 ≼ 1, но 𝜑(0) > 𝜑(1), таким образом 𝜑 немонотонная функция одной переменной ⇒ 𝜑(𝑥) = 𝑥̅
5. Класс 𝐿 (линейные функции)
Функция 𝑓 называется линейной, если её полином Жегалкина имеет
степень не больше 1.
Лемма: пусть 𝐿𝑛 - множество линейных функций от 𝑛 переменных,
тогда мощность этого множества |𝐿𝑛 | = |𝐸 𝑛+1 | = 2𝑛+1
Доказательство: множество функций однозначно определяется
набором своих коэффициентов (𝑎0 , 𝑎1 , … , 𝑎𝑛 ) ∈ 𝐸 𝑛+1
Лемма: класс 𝐿 замкнут
Доказательство:
𝑛
𝑓(𝑥1 , … , 𝑥𝑛 ) = 𝑎0 ⊕ ∑⊕ 𝑎𝑖 𝑥𝑖 ∈ 𝐿
𝑖=1
𝑚
𝑔𝑖 (𝑦1 , … , 𝑦𝑛 ) = 𝑏 𝑖 0 ⊕ ∑⊕ 𝑏 𝑖𝑗 𝑦𝑗 ∈ 𝐿
𝑗=1
𝑛
𝑚
𝐹(𝑦1 , … , 𝑦𝑛 ) = 𝑎0 ⊕ ∑⊕ 𝑎𝑖 (𝑏 𝑖 0 ⊕ ∑⊕ 𝑏 𝑖𝑗 𝑦𝑗 )
𝑖=1
𝑗=1
При раскрытии знаков суммирования, переменные сохраняют первую
степень.
Лемма: (о нелинейной функции)
Пусть 𝑓 ∉ 𝐿 тогда из этой функции путем подстановки вместо её
переменных 𝑥1 , … , 𝑥𝑛 констант 0,1 и функций 𝑥 или 𝑥̅ , а так же, если
необходимо, взятия отрицания над всей функцией, можно получить
нелинейную функцию 𝑥1 ∧ 𝑥2 .
Доказательство: 𝑓 ∉ 𝐿 тогда её полином Жегалкина включает
слагаемые, имеющие 2 и более сомножителей. Пусть среди таких
слагаемых есть слагаемые, включающие 𝑥1 ∧ 𝑥2 , тогда представим
функцию 𝑓 в виде:
𝑓(𝑥1 , … , 𝑥𝑛 ) = 𝑥1 𝑥2 𝑓1 (𝑥3 , … , 𝑥𝑛 ) ⊕ 𝑥1 𝑓2 (𝑥3 , … , 𝑥𝑛 ) ⊕ 𝑥2 𝑓3 (𝑥3 , … , 𝑥𝑛 )
⊕ 𝑓4 (𝑥3 , … , 𝑥𝑛 )
В силу того, что полином Жегалкина для 𝑓 – единственный
𝑓1 ≢ 0, тогда ∃(𝛼3 , … , 𝛼𝑛 ): 𝑓1 (𝛼3 , … , 𝛼𝑛 ) = 1. Берем этот набор и
вычитаем от него значение других функций: 𝑓2 (𝛼) = 𝛼, 𝑓3 (𝛼) = 𝛽,
𝑓4 (𝛼) = 𝛾.
𝜑(𝑥1 , 𝑥2 ) = 𝑓(𝑥1 , 𝑥2 , 𝛼3 , … , 𝛼𝑛 ) = 𝑥1 𝑥2 ∧ 1 ⊕ 𝑥1 𝛼 ⊕ 𝑥2 𝛽 ⊕ 𝛾
На базе 𝜑(𝑥1 , 𝑥2 ) построим 𝜓(𝑥1 , 𝑥2 ) = 𝜑(𝑥1 ⊕ 𝛽, 𝑥2 ⊕ 𝛼) ⊕ 𝛼𝛽 ⊕ 𝛾 =
(𝑥1 ⊕ 𝛽)(𝑥2 ⊕ 𝛼) ⊕ 𝛼(𝑥1 ⊕ 𝛽) ⊕ 𝛽(𝑥2 ⊕ 𝛼) ⊕ 𝛾 ⊕ 𝛼𝛽 ⊕ 𝛾 =
𝑥1 𝑥2 ⊕ 𝑥1 𝛼 ⊕ 𝑥2 𝛽 ⊕ 𝑥1 𝛼 ⊕ 𝛼𝛽 ⊕ 𝑥2 𝛽 ⊕ 𝛼𝛽 ⊕ 𝛼𝛽 = 𝑥1 𝑥2
Полнота булевых функций
Система функций 𝐹 = {𝑓1 , … , 𝑓𝑠 } называется полной (функционально
полной), если её замыкание совпадает с множеством булевых
функций, т.е. любую булеву функцию можно представить в виде
суперпозиции функций системы 𝐹. [𝐹] = 𝐵
Теорема: (о полноте двух систем)
Пусть даны две системы булевых функций 𝐺 и 𝐹; система 𝐺 =
{𝑔1 , … , 𝑔𝑙 , … } и 𝐹 = {𝑓1 , … , 𝑓𝑠 , … } о которых известно, что:
1. Система 𝐺 – полная
2. Каждую функцию системы 𝐺 можно представить, как
суперпозицию функций системы 𝐹, т.е. 𝑔𝑖 = 𝑓𝑛 (𝑓𝑗1 , … , 𝑓𝑗𝑛 , … )
Тогда система 𝐹 является полной.
Доказательство: рассмотрим произвольную булеву функцию 𝜑, 𝜑 ∈ 𝐵;
так как система 𝐺 полна, то функцию 𝜑 можно представить, как
суперпозицию некоторых функций 𝑔𝑘1 , 𝑔𝑘2 , … ∈ 𝐺 этой системы, то
есть 𝜑 = 𝑔(𝑔𝑘1 , 𝑔𝑘2 , … ), но так как каждая функция из 𝐺, в том числе и
выбранные, представимы в виде суперпозиции функций 𝐹, то
функцию 𝜑 можно представить в следующем виде: 𝜑 = 𝑓(𝑓𝑘1 , 𝑓𝑘2 , … ),
где 𝑓 ∈ 𝐹 ⟹ 𝐹 – полная.
Теорема: (о функциональной полноте)
Для того, чтобы система булевых функций 𝐹 была полной необходимо
и достаточно, чтобы она целиком не содержалась ни в одном из 5
замкнутых классов: 𝑇0 , 𝑇1 , 𝑇𝑆 , 𝑇𝑀 , 𝑇𝐿
Доказательство: 1) Необходимость: мы предполагаем, что 𝐹 – полная.
Предположим противное: пусть 𝐹 содержится в некоторых из
𝑇0
𝑇1
перечисленных классов. 𝐹 ⊆ 𝑅, 𝑅 = 𝑇𝑆 Каждый из классов является
𝑇𝑀
[ 𝑇𝐿
замкнутым [𝑅] ⊂ 𝐵 (содержится, но не совпадает). Так как, система 𝐹
полна, то [𝐹] = 𝐵 . С одной стороны, из 𝐹 ⊆ 𝑅, то [𝐹] ⊆ [𝑅], С другой
стороны 𝐵 = [𝐹] ⊆ [𝑅] ⊂ 𝐵. Множество строго включено в себя ⇒
получено противоречие.
⟹ 𝐹 не может содержаться целиком ни в одном из замкнутых
классов.
2) Достаточность: 𝐹 целиком не содержится ни в одном из пяти
классов. Докажем, что 𝐹 - полная. Для этого из системы функций 𝐹
рассмотрим не более пяти булевых функций: 𝑓0 ∉ 𝑇0 , 𝑓1 ∉ 𝑇1 , 𝑓𝑆 ∉
𝑇𝑆 , 𝑓𝑀 ∉ 𝑇𝑀 , 𝑓𝐿 ∉ 𝑇𝐿 . Формируем новую систему 𝐹′ = {𝑓0 , 𝑓1 , 𝑓𝑆 , 𝑓𝑀 , 𝑓𝐿 }.
Возьмём класс 𝐺 = {𝑥,
̅ 𝑥1 ∧ 𝑥2 }. Нам известно, что этот класс полный.
Покажем, что функции класса 𝐺 можно представить в виде
суперпозиции функций системы 𝐹′ (а следовательно и функций
системы 𝐹). Возьмём 𝑓0 ∉ 𝑇0 , 𝑓1 ∉ 𝑇1 . Построим 𝜑(𝑥) = 𝑓0 (𝑥) =
𝑓0 (𝑥, … , 𝑥); 𝜓(𝑥) = 𝑓1 (𝑥) = 𝑓1 (𝑥, … , 𝑥)
𝜑(0) = 𝑓0 (0) = 1; 𝜓(1) = 𝑓1 (1) = 0
Доопределим 𝜑(1), 𝜓(0) (рассмотрим все возможные варианты):
1. 𝜑(0) = 1; 𝜑(1) = 0; 𝜓(0) = 0; 𝜓(1) = 0
тогда 𝜓 ∈ 𝑇0 ; 𝜓(𝑥) = 0, 𝜑(𝑥) = 𝑥̅ ; из функций 𝑓0 и 𝑓1 получаем
𝑥̅ и 0; 0̅ = 1 ⟹ 𝑥̅ , 0,1
2. 𝜑(0) = 1; 𝜑(1) = 0; 𝜓(0) = 1; 𝜓(1) = 0
𝜓(𝑥) = 𝑥̅ , 𝜑(𝑥) = 𝑥̅ ; возьмём 𝑓𝑆 ∉ 𝑇𝑆 , по лемме о
̅
несамодвойственной функции [1 ⇒ 0 = 1 ⟹ 𝑥̅ , 0,1
0 ⇒ 1̅ = 0
3. 𝜑(0) = 1; 𝜑(1) = 1; 𝜓(0) = 0; 𝜓(1) = 0
𝜓(𝑥) = 0, 𝜑(𝑥) = 1; возьмём 𝑓𝑀 ∉ 𝑇𝑀 , по лемме о
немонотонной получаем функцию одной переменной 𝑓(𝑥) = 𝑥̅
0̅ = 1 ⟹ 𝑥̅ , 0,1
4. 𝜑(0) = 1; 𝜑(1) = 1; 𝜓(0) = 1; 𝜓(1) = 0
тогда 𝜑 ∈ 𝑇1 ; 𝜓(𝑥) = 𝑥̅ , 𝜑(𝑥) = 1 ; из функций 𝑓0 и 𝑓1 получаем
𝑥̅ и 1; 1̅ = 0 ⟹ 𝑥̅ , 0,1.
Возьмём нелинейную функцию 𝑓𝐿 ∉ 𝑇𝐿 . По лемме о нелинейной
функции мы получаем нелинейную функцию двух переменных 𝑥1 ∧ 𝑥2 .
Таким образом функции класса 𝐺 = {𝑥,
̅ 𝑥1 ∧ 𝑥2 } можно получить из
′
функций класса 𝐹 .
⟹ 𝐹 ′ - полный и система 𝐹 – полная
Теорема: (критерий Эмиля Поста)
Из всякой полной системы 𝐹 можно выделить полную подсистему 𝐹 ′ ,
𝐹 ′ ⊂ 𝐹, содержащую не более четырёх функций.
Доказательство: согласно теореме о функциональной полноте, из
полной системы 𝐹 можно выделить полную 𝐹 ′ ′, содержащую не более
пяти функций, однако: рассмотрим 𝑓0 ∉ 𝑇0. Эта функция в точке
𝑓0 (0) = 0
0 (1)
[
𝑓0 (1) =
1 (2)
В случае 1 𝑓0 ∉ 𝑇1 + 𝑓0 ∉ 𝑇𝑀 , в случае 2 𝑓0 ∉ 𝑇𝑆
Пусть 𝑚 некоторый класс булевых функций. Система булевых функций
𝐹 ⊆ 𝑚 называется полной в 𝑚, если её замыкание [𝐹] = 𝑚 при этом 𝑚
считается замкнутым классом.
Система булевых функций 𝐹 из замкнутого класса 𝑚 называется
базисом в 𝑚, если она является полной в 𝑚, а любая её подсистема
полной в 𝑚 не является.
Теорема1: каждый замкнутый класс булевых функций имеет конечный
базис.
Теорема 2: мощность множества замкнутых классов булевых функций
является счётной.
Предикаты.
Понятие предиката и операции над ними.
Предложение или утверждение, содержащее одну или несколько
переменных, при подстановке вместо которых конкретных значений
из некоторых множеств, получаем высказывание (истинное или
ложное) называется предикатом.
Количество переменных, входящих в предложение, называется
местностью или арностью предиката.
Пусть даны множества 𝑀1 , … , 𝑀𝑛 произвольной природы, тогда местный предикат – это отображение 𝑃: 𝑀1 ∗ … ∗ 𝑀𝑛 → 𝐸 = {0,1}.
Множество 𝑀, представляющее собой декартовое произведение,
называется предметной областью.
Множество истинности предиката
𝐸𝑃 = {𝑥1 , … , 𝑥𝑛 ∈ 𝑀: 𝑃(𝑥1 , … , 𝑥𝑛 ) = 1}.
Переменные, входящие в 𝑀, называются предметными
переменными.
Конкретизация предиката 𝑃(𝑥1 , … , 𝑥𝑛 ) - 𝑃(𝑎1 , … , 𝑎𝑛 ).
Высказывание – нольмеснтый предикат.
Классификация предикатов:
𝑃: 𝑀1 ∗ … ∗ 𝑀𝑛 → 𝐸 = {0,1},
𝑀 = 𝑀1 ∗ … ∗ 𝑀𝑛
Предикат 𝑃 называется тождественно истинным на множестве 𝑀, если
любая её конкретизация является истинным высказыванием.
∀𝑎1 , … , 𝑎𝑛 ∈ 𝑀 𝑃(𝑎1 , … , 𝑎𝑛 ) = 1
Предикат 𝑃 называется выполнимым на множестве 𝑀, если
существует набор предметных констант, на котором предикат
превращается в истинное высказывание.
∃𝑎1 , … , 𝑎𝑛 ∈ 𝑀 𝑃(𝑎1 , … , 𝑎𝑛 ) = 1
Предикат 𝑃 называется опровержимым на множестве 𝑀, если
существует набор предметных констант, на котором предикат
превращается в ложное высказывание.
∃𝑎1 , … , 𝑎𝑛 ∈ 𝑀 𝑃(𝑎1 , … , 𝑎𝑛 ) = 0
Предикат 𝑃 называется тождественно ложным на множестве 𝑀, если
любая её конкретизация является ложным высказыванием.
∀𝑎1 , … , 𝑎𝑛 ∈ 𝑀 𝑃(𝑎1 , … , 𝑎𝑛 ) = 0
Два 𝑛 −местных предиката 𝑃(𝑥1 , … , 𝑥𝑛 ) и 𝑄(𝑥1 , … , 𝑥𝑛 ) заданных на
одних и тех же множествах 𝑀1 , … , 𝑀𝑛 называются равносильными,
𝑃 ⇔ 𝑄, если они принимают одинаковые значения на одних и тех же
наборах переменных. Или другими словами 𝐸𝑃 = 𝐸𝑄 .
Предикат 𝑄(𝑥1 , … , 𝑥𝑛 ) заданный на множествах 𝑀1 , … , 𝑀𝑛 называется
логическим следствием предиката 𝑃(𝑥1 , … , 𝑥𝑛 ), заданного на тех же
множествах, 𝑃 ⇒ 𝑄, если он превращается в истинное высказывание
на тех же наборах переменных, на которых превращается в истинное
высказывание предикат 𝑃.
Операции над предикатами:
𝑃: 𝑀1 ∗ … ∗ 𝑀𝑛 → 𝐸 = {0,1}
1. Отрицание предиката
Отрицанием 𝑛 −местного предиката 𝑃, заданного на множестве 𝑀,
называется 𝑛 −местный предикат 𝑃̅, такой, что
𝑃̅(𝑎1 , … , 𝑎𝑛 ) = 1 ⇔ 𝑃(𝑎1 , … , 𝑎𝑛 ) = 0
𝐸𝑃̅ = 𝑀\𝐸𝑃
2. Конъюнкция предикатов
Конъюнкцией предикатов 𝑃(𝑎1 , … , 𝑎𝑛 ) и 𝑄(𝑏1 , … , 𝑏𝑘 ) называется
новый предикат 𝑃 ∧ 𝑄: 𝑀1 ∗ … ∗ 𝑀𝑛 ∗ 𝑁1 ∗ … ∗ 𝑁𝑘 → 𝐸
𝑃(𝑎1 , … , 𝑎𝑛 ) = 1
(𝑃 ∧ 𝑄)(𝑎1 , … , 𝑎𝑛 , 𝑏1 , … , 𝑏𝑘 ) = 1 ⟺ {
𝑄(𝑏1 , … , 𝑏𝑘 ) = 1
𝐸𝑃∧𝑄 = 𝐸𝑃 ∩ 𝐸𝑄
3. Дизъюнкция предикатов
Дизъюнкцией двух предикатов 𝑃: 𝑀 → 𝐸 и 𝑄: 𝑁 → 𝐸 называется
новый предикат 𝑃 ∨ 𝑄: 𝑀1 ∗ … ∗ 𝑀𝑛 ∗ 𝑁1 ∗ … ∗ 𝑁𝑘 → 𝐸
𝑃(𝑎1 , … , 𝑎𝑛 ) = 0
(𝑃 ∨ 𝑄)(𝑎1 , … , 𝑎𝑛 , 𝑏1 , … , 𝑏𝑘 ) = 0 ⟺ {
𝑄(𝑏1 , … , 𝑏𝑘 ) = 0
𝐸𝑃∨𝑄 = 𝐸𝑃 ∪ 𝐸𝑄
4. Импликация предикатов
Импликацией двух предикатов 𝑃: 𝑀 → 𝐸 и 𝑄: 𝑁 → 𝐸 называется
новый предикат 𝑃 → 𝑄: 𝑀1 ∗ … ∗ 𝑀𝑛 ∗ 𝑁1 ∗ … ∗ 𝑁𝑘 → 𝐸
𝑃(𝑎1 , … , 𝑎𝑛 ) = 1
(𝑃 → 𝑄)(𝑎1 , … , 𝑎𝑛 , 𝑏1 , … , 𝑏𝑘 ) = 0 ⟺ {
𝑄(𝑏1 , … , 𝑏𝑘 ) = 0
𝐸𝑃→𝑄 = 𝐸𝑃̅ ∪ 𝐸𝑄
Операции, связанные кванторами.
Рассмотрим одноместный предикат 𝑃(𝑥).
Операциями, связанными кванторами общности, называются правила,
по которым одноместному предикату 𝑃(𝑥) ставится в соответствие
высказывание ∀𝑥𝑃(𝑥) (для всех/любого): ∀𝑥𝑃(𝑥) = 1 ⇔ 𝑃(𝑥) ≡ 1
Операциями, связанными кванторами существования, называются
правила, по которым одноместному предикату 𝑃(𝑥) ставится в
соответствие высказывание ∃𝑥𝑃(𝑥): ∃𝑥𝑃(𝑥) = 0 ⇔ 𝑃(𝑥) ≡ 0.
Теорема: пусть 𝑃: 𝑀 → 𝐸 одноместный предикат и 𝑀 = {𝑎1 , … , 𝑎𝑛 },
тогда ∀𝑥𝑃(𝑥) = 𝑃(𝑎1 ) ∧ … ∧ 𝑃(𝑎𝑛 ) и ∃𝑥𝑃(𝑥) = 𝑃(𝑎1 ) ∨ … ∨ 𝑃(𝑎𝑛 ).
Доказательство: Пусть ∀𝑥𝑃(𝑥) = 1 ⇔ 𝑃(𝑥) ≡ 1 ⇔ 𝑃(𝑎1 ) = ⋯ =
𝑃(𝑎𝑛 ) = 1 ⇔ 𝑃(𝑎1 ) ∧ … ∧ 𝑃(𝑎𝑛 ) = 1;
Пусть ∃𝑥𝑃(𝑥) = 0 ⇔ 𝑃(𝑥) ≡ 0 ⇔ 𝑃(𝑎1 ) = ⋯ = 𝑃(𝑎𝑛 ) = 0 ⇔ 𝑃(𝑎1 ) ∨
… ∨ 𝑃(𝑎𝑛 ) = 0
̅̅̅̅̅̅̅̅̅̅
∀𝑥𝑃(𝑥) = ∃𝑥𝑃̅(𝑥);
̅̅̅̅̅̅̅̅̅̅
∀𝑥𝑃(𝑥) = 0 ⇔ ∀𝑥𝑃(𝑥) = 1 ⇔ 𝑃(𝑥) ≡ 1 ⇔ 𝑃̅(𝑥) ≡ 0 ⇔ ∃𝑥𝑃̅(𝑥) = 0
̅̅̅̅̅̅̅̅̅̅ = ∀𝑥𝑃̅(𝑥);
∃𝑥𝑃(𝑥)
̅̅̅̅̅̅̅̅̅̅
∃𝑥𝑃(𝑥) = 1 ⇔ ∃𝑥𝑃(𝑥) = 0 ⇔ 𝑃(𝑥) ≡ 0 ⇔ 𝑃̅(𝑥) ≡ 1 ⇔ ∀𝑥𝑃̅(𝑥) = 1
Операция, связывания квантора общности предиката 𝑃: 𝑀 → 𝐸 по
переменной 𝑥𝑖 называется правило, по которому 𝑛 −местному
предикату 𝑃(𝑥1 , … , 𝑥𝑖 , … , 𝑥𝑛 ) ставится в соответствие 𝑛 − 1 −местный
предикат ∀𝑥 𝑃(𝑥1 , … , 𝑥𝑖−1 , 𝑥𝑖+1 , … , 𝑥𝑛 ): 𝑀1 ∗ … ∗ 𝑀𝑖−1 ∗ 𝑀𝑖+1 ∗ … ∗ 𝑀𝑛
который для каждого набора предметных постоянных превращается в
высказывание которое истинно ⇔ одноместный предикат
∀𝑥 𝑃(𝑎1 , … , 𝑥𝑖 , … , 𝑎𝑛 ) является тождественно истинным на множестве
𝑀𝑖 .
Формулы логики предикатов.
Алфавит символов:
1. Предметные переменные
2. 0-местные предикаты (высказывания)
3. 𝑛 −местные предикатные переменные
4. Символы операций: ∧,∨, →, ↔
5. Кванторы ∀, ∃
6. Скобки ( )
Определение:
1. Каждая 0-местная предикатная переменная является формулой
2. Если 𝑃(∗, … ,∗) 𝑛 −местная предикатная переменная, то
𝑃(𝑥1 , … , 𝑥𝑛 ) - формула, в которой предметные переменные
𝑥1 , … , 𝑥𝑛 – свободные
3. Если 𝐹 - формула, то 𝐹̅ так же является формулой, в которой
свободные те же переменные, которые свободные и в 𝑓, и
связаны те переменные, которые и были связанны.
4. Если 𝐹1 и 𝐹2 - формулы, то выражения 𝐹1 ∧ 𝐹2 , 𝐹1 ∨ 𝐹2 , 𝐹1 →
𝐹2 , 𝐹1 ↔ 𝐹2 так же являются формулами, причём: те
переменные, которые свободны хотя бы в одной из формул
объявляются свободными в новых формулах, а те переменные,
которые связны хотя бы в одной из формул являются связными
и в новой формуле.
5. Если 𝐹 - формула, в которой переменная 𝑥 входит свободно, то
∀𝑥𝐹(𝑥) и ∃𝑥𝐹(𝑥) так же являются формулами, в которой
переменная 𝑥 является связной.
6. Никаких других формул в логике предикатов нет.
Формулы, в которых нет свободных переменных, называются
замкнутыми.
Формулы, содержащие свободные переменные называются
открытыми.
Логические значения формулы логики предикатов зависит от значений
трёх видов переменных:
1. Значений, входящих в формулу переменных высказывания
2. Значений, свободных предметных переменных
3. Значений, предикатных переменных, входящих в формулу.
Понятие равносильной формулы.
Формула логики предикатов называется общезначимой или
тавтологией, если при всякой подстановке вместо её предикатных
переменных любых конкретных предикатов, заданных на каких угодно
множествах она превращается в тождественно истинный предикат.
Формулы 𝐴 и 𝐵 называются равносильными на множестве 𝑀 если
при любой замене имеющихся в них простых (элементарных) формул
на предикаты, заданные на множестве 𝑀, данные формулы
превращаются в равносильные предикаты.
Формулы 𝐴 и 𝐵 называются равносильными, если они равносильны
на любых множествах.
Основные равносильные предикаты:
Пусть 𝐴(𝑥) и 𝐵(𝑥) – переменные предикаты, в которые переменная 𝑥
входит свободно, 𝐶 - некоторое высказывание, тогда справедливо:
̅̅̅̅̅̅̅̅̅̅ = ∃𝑥𝐴̅(𝑥)
1. ∀𝑥𝐴(𝑥)
̅̅̅̅̅̅̅̅̅̅ = ∀𝑥𝐴̅(𝑥)
2. ∃𝑥𝐴(𝑥)
3. ∀𝑥𝐴(𝑥) ∧ ∀𝑥𝐵(𝑥) = ∀𝑥(𝐴(𝑥) ∧ 𝐵(𝑥))
4. ∃𝑥𝐴(𝑥) ∨ ∀𝑥𝐵(𝑥) = ∃𝑥(𝐴(𝑥) ∨ 𝐵(𝑥))
5. 𝐶 ∧ ∀𝑥𝐵(𝑥) = ∀𝑥(𝐶 ∧ 𝐵(𝑥))
6. 𝐶 ∨ ∀𝑥𝐵(𝑥) = ∀𝑥(𝐶 ∨ 𝐵(𝑥))
7. 𝐶 ∧ ∃𝑥𝐵(𝑥) = ∃𝑥(𝐶 ∧ 𝐵(𝑥))
8. 𝐶 ∨ ∃𝑥𝐵(𝑥) = ∃𝑥(𝐶 ∨ 𝐵(𝑥))
Приведенная форма для формулы предикатов.
Формула равносильная данной и не содержащая других операций
логики высказывания, кроме ∧,∨, 𝑎̅, в которой отрицание относится
только к простым формулам, называется формулой приведенной
формы. (нормальной)
Теорема: для любой формулы логики предикатов существует
равносильная ей приведенная формула.
Доказательство: (методом математической индукции по числу
логических связок). Пусть 𝑛 - число логических связок.
Пусть 𝑛 = 0, тогда формула не имеет логических связок.
Пусть при 𝑛 = 𝑘 − 1 формула верна. Докажем для 𝑛 = 𝑘.
Разобьем 𝐹 произвольно на 2 части, в каждой из которых меньше, чем
𝑘 − 1 логических связок.
Тогда по предположению для 𝐹1 и 𝐹2 можем построить приведенные
формы 𝐹̃1 и ̃
𝐹2 , тогда,
 Если 𝐹 = 𝐹1 ∨ 𝐹2 , то 𝐹̃ = 𝐹̃1 ∨ ̃
𝐹2
 Если 𝐹 = 𝐹1 ∧ 𝐹2 , то 𝐹̃ = 𝐹̃1 ∧ ̃
𝐹2
̅
 Если 𝐹 = 𝐹1 , то если 𝐹1 является простой, то 𝐹̃1 составная, тогда
для 𝐹̃ мы должны перенести отрицания с помощью законов де
̃1
Моргана; 𝐹̃ = 𝐹̅
̃1 ∨ 𝐹
̃2
 Если 𝐹 = 𝐹1 → 𝐹2 = 𝐹̅1 ∨ 𝐹2 , то 𝐹̃ = 𝐹̅
Предваренная нормальная форма для формул логики предикатов.
Определение: говорят, что предикатная формула 𝐹 записана в
предваренной нормальной форме, если она имеет следующий вид:
𝐹 = 𝐾1 𝑈1 … 𝐾𝑚 𝑈𝑚 𝐴, где 𝐾𝑖 = {∃, ∀}, 𝑈𝑖 - переменная, связанная с
квантором 𝐾𝑖 , 𝐴 - формула в приведенной форме и не содержит
кванторов.
Теорема: для любой формулы логики предикатов существует
равносильная ей предваренная форма.
Доказательство: методом математической индукции по числу
логических и кванторных операций.
𝐹 - формула логики предикатов
Если 0 – число логических и кванторных операций, тогда 𝐹 - простая,
𝐹̃ - предваренная, 𝐹̃ = 𝐹.
Предполагаем истинность для 𝑛 = 𝑘 − 1 операций.
Докажем истинность при 𝑛 = 𝑘. Выделим в 𝐹 2 части:
𝐹 = 𝐾𝑖 𝑈𝑖 𝐹1 (𝑥) или 𝐹 = 𝐹1 ∨ 𝐹2 , 𝐹 = 𝐹1 ∧ 𝐹2 , 𝐹 = 𝐹1 → 𝐹2 , 𝐹 = 𝐹1 ↔ 𝐹2
Все формулы 𝐹1 и 𝐹2 содержит 𝑘 − 1 операцию, поэтому, по
предположению, для них есть предваренные формы 𝐹̃1 и ̃
𝐹2
 Если 𝐹 = 𝐹̅1 ; если в 𝐹1 есть кванторы, то необходимо ввести
отрицание под элементарные формулы и заменить кванторы
̅̅̅̅̅̅̅̅̅̅ = ∃𝑥𝐹̅ (𝑥)
∀𝑥𝐹(𝑥)
̅̅̅̅̅̅̅̅̅̅
∃𝑥𝐹(𝑥) = ∀𝑥𝐹̅ (𝑥)
Если отрицание относится к составной формуле, используем
законы де Моргана.
𝐹 = 𝐹̅1 = 𝐹̌1 = 𝐹̃
 𝐹 = 𝐾𝑥𝑖 𝐹1 (𝑥1 , … , 𝑥𝑖 , … , 𝑥𝑛 ) тогда у нас есть предваренная форма
для 𝐹1
𝐹̃ = 𝐾𝑥𝑖 𝐹̌1 (𝑥1 , … , 𝑥𝑖 , … , 𝑥𝑛 )
 𝐹 = 𝐹1 ∨ 𝐹2 ; рассмотрим предваренные формы для 𝐹1 и 𝐹2 и
переобозначим связные переменные так, чтобы все они были
̌2
различны: 𝐹1 = 𝐹̌1 , 𝐹2 = 𝐹
0
𝐹̌ = 𝐾 𝑥 … 𝐾 𝑥 𝐴 (𝑥 , … ); 𝐹̌0 = 𝐾 0 𝑦 … 𝐾 0 𝑦 𝐴 (𝑦 , … )
1
1 1
𝑚 𝑚 1
1
2
1
1
𝑙
𝑙 2
1
0
0
0
̌0
𝐹̃ = 𝐹̃
1 ∨ 𝐹2 = 𝐾1 𝑥1 … 𝐾𝑚 𝑥𝑚 𝐾1 𝑦1 … 𝐾𝑙 𝑦𝑙 (𝐴1 (𝑥1 , … ) ∨ 𝐴2 (𝑦1 , … ))
Элементы теории алгоритмов.
Машина Тьюринга – это воображаемая машина:
1. Бесконечная лента, которая поделена на ячейки, в которых
находятся символы
2. Внешний алфавит: совокупность знаков, с помощью которых
записываются слова 𝐴 = {𝑎0 , 𝑎1 , … , 𝑎𝑛 }, 𝑎0 - пустой символ
3. Устройство управления, может останавливаться на месте или
двигаться влево, вправо
4. Внутренний алфавит – совокупность состояний машины 𝑄 =
{𝑞0 , 𝑞1 , … , 𝑞𝑛 }, 𝑞0 – особое «стоп» состояние, 𝑞1 – начальное
При работе над словом возможны 2 ситуации:
 После конечного числа шагов машина останавливается
(переход в состояние 𝑞0 ) и на ленте оказывается
изображенным некоторое слово, в этом случае говорят, что
машина применима к начальному слову и преобразовывает его
в другое слово;

Машина никогда не останавливается (есть 𝑞0 , но она к нему не
переходит), в этом случае говорят, что машина не применима к
данному слову.
Пусть на некотором шаге машина в состоянии 𝑞𝑙 устройство
управления находится над 𝑎𝑘 ; мы должны заменить его на 𝑎𝑗 ,
устройство управления должны оставить на месте или сместить:
𝑞𝑙 𝑎𝑘 → 𝑎𝑗 𝐷𝑞𝑖 𝐷 = {Л, Н, П}
Совокупность таких команд называется программой машины
Тьюринга.
Тьюринговая функциональная система
𝑞𝑙 𝑎𝑘 → 𝑎𝑗 𝐷𝑞𝑖 ⟺
𝑞𝑙
𝑎𝑘
𝑎𝑗 𝐷𝑞𝑖
Вычисление по Тьюрингу функций.
Рассмотрим расширенный натуральный ряд: ℕ = {0,1,2, … },
рассмотрим функции от 𝑛 переменных 𝑓: 𝐷𝑓 → ℕ0 , где 𝐷𝑓 ⊆ ℕ0 𝑛
Такие функции называются частичными функциями счётнозначной
логики. Множество функций 𝒫ч𝑛 .
Если область определения функции совпадает со всем ℕ0 , то тогда 𝑓
называется всюду определенной.
Пусть 𝑓: ℕ0 → ℕ0 , 𝑓(𝑥) = 𝑥 + 1; закодируем числа натурального ряда:
𝑛 → 1𝑛+1 , тогда слово 𝑚1 , 𝑚2 , … , 𝑚𝑛 будем записывать на ленте
1𝑚1 +1 𝑎0 1𝑚2 +1 𝑎0 … 𝑎0 1𝑚𝑛+1
Определение: говорят, что функция 𝑓 вычислима по Тьюрингу, если
существует машина Тьюринга, работающая в алфавите {𝑎0 , 1} и
обладающая следующими свойствами:
1. Если набор (𝑚1 , 𝑚2 , … , 𝑚𝑛 ) ∈ 𝐷𝑓 - область определения и
𝑓(𝑚1 , 𝑚2 , … , 𝑚𝑛 ) = 𝑚, то машина Тьюринга применима к слову
в начальной конфигурации 1𝑚1 +1 𝑎0 … 𝑎0 1𝑚𝑛 +1
2. Если (𝑚1 , 𝑚2 , … , 𝑚𝑛 ) ∉ 𝐷𝑓 , то машина не применима к слову в
начальной конфигурации, то есть начиная работу над словом
она начинает циклить.
Рекурсивные функции:
1. 0 – функция: 0(𝑥) = 0
2. Функция следования 𝑆(𝑥) = 𝑥 + 1
𝑛 (𝑥
3. Оператор проектирования 𝐽𝑚
1 , … , 𝑥𝑛 ) = 𝑥𝑚
Введем следующие операции:
1. Операция суперпозиции:
𝑓(𝑥1 , … , 𝑥𝑛 )
𝑔1 (𝑦1 , … , 𝑦𝑚 )
…
𝑔𝑛 (𝑦1 , … , 𝑦𝑚 )
𝐹(𝑦1 , … , 𝑦𝑚 ) = 𝑓(𝑔1 (𝑦1 , … , 𝑦𝑚 ), … , 𝑔𝑛 (𝑦1 , … , 𝑦𝑚 ))
2. Примитивная рекурсия
𝑔(𝑥1 , … , 𝑥𝑛 , 𝑥𝑛+1 , 𝑥𝑛+2 ) 𝑔 ∈ 𝒫ч𝑛+2
ℎ(𝑥1 , … , 𝑥𝑛 ) ℎ ∈ 𝒫ч𝑛
𝑓(𝑥1 , … , 𝑥𝑛 , 𝑥𝑛+1 ) 𝑓 ∈ 𝒫ч𝑛+1
𝑓(𝑥1 , … , 𝑥𝑛 , 0) = ℎ(𝑥1 , … , 𝑥𝑛 )
𝑓(𝑥1 , … , 𝑥𝑛 , 𝑦 + 1) = 𝑔(𝑥1 , … , 𝑥𝑛 , 𝑦, 𝑓(𝑥1 , … , 𝑥𝑛 , 𝑦))
3. Процедура взятия 𝜇 оператора
𝑓1 (𝑥1 , … , 𝑥𝑛 , 𝑥𝑛+1 ) 𝑓1 ∈ 𝒫ч𝑛+1
𝑓2 (𝑥1 , … , 𝑥𝑛 , 𝑥𝑛+1 ) 𝑓2 ∈ 𝒫ч𝑛+1
(𝑥1 , … , 𝑥𝑛 ) = 𝑦
Ищем следующим образом:
𝑦: 𝑓1 (𝑥1 , … , 𝑥𝑛 , 0) ≠ 𝑓2 (𝑥1 , … , 𝑥𝑛 , 0)
𝑓1 (𝑥1 , … , 𝑥𝑛 , 𝑦 − 1) ≠ 𝑓2 (𝑥1 , … , 𝑥𝑛 , 𝑦 − 1)
𝑓1 (𝑥1 , … , 𝑥𝑛 , 𝑦) = 𝑓2 (𝑥1 , … , 𝑥𝑛 , 𝑦)
𝜑(𝑥1 , … , 𝑥𝑛 ) = 𝜇𝑦 [𝑓1 (𝑥1 , … , 𝑥𝑛 , 𝑦) = 𝑓2 (𝑥1 , … , 𝑥𝑛 , 𝑦)]
Определение: функция называется частично рекурсивной, если она
может быть получена из простейших функций: 0 – функции, функции
следования, функции выбора переменной, с помощью конечного
числа применений суперпозиций примитивной рекурсии и взятия 𝜇
оператора. Если функция всюду определена и частична рекурсивна,
она называется общерекурсивной функцией.
Теорема: всякая частично рекурсивная функция вычислима по
Тьюрингу и наоборот: всякая вычислимая по Тьюрингу функция
является частично рекурсивной.
Определение: множество называется общерекурсивным, если оно
совпадает с множеством значений некоторой общерекурсивной
функции (например множество чётных чисел).
Определение: рассмотрим некоторое множество 𝑀, которое является
подмножеством некоторого множества, тогда характеристической
̂ → {0,1} 𝑋𝑀 (𝑥) = [1, 𝑥 ∈ 𝑀
функцией данного множества 𝑋: 𝑀
0, 𝑥 ∉ 𝑀
Определение: множество 𝑀 называется рекурсивным, если его
характеристическая функция частично рекурсивная.
Теорема: всякое рекурсивное множество является общерекурсивным.
Нормальные алгоритмы Маркова.
Рассмотрим некоторую совокупность символов – алфавит 𝐴,
𝑎1 , 𝑎2 , … , 𝑎𝑛 - слово, 𝜆 – пустое слово.
Определение: Марковской подстановкой называется операция,
которая записывается (𝑃, 𝑄), которая ищет первое вхождение слова 𝑃
в некоторое слово 𝐹 и заменяет слово 𝑃 на слово 𝑄.
𝑃 → 𝑄 – если дальше продолжаем работу
𝑃 → ∙ 𝑄 – окончание работы после
Работа алгоритма происходит следующим образом: рассматривается
слово 𝑅 и ищется первое 𝑃𝑘 , если ни одно из 𝑃𝑗 не является подсловом
𝑅, то в этом случае алгоритм не начинает свою работу, иначе 𝑃𝑘 → 𝑄𝑘
и получаем новое слово 𝑅1 . Если эта подстановка была
заключительной, то останавливаемся и результат 𝑅1 , иначе начинаем
работу сначала, но уже с 𝑅1 .
Определение: функция, заданная на некотором множестве слов
алфавита 𝐴 называется нормально вычислимой, если существует такое
расширение данного алфавита 𝐵 и такой нормальный алгоритм
Маркова, работающий над словами алфавита 𝐵, который каждое
слово 𝑉 из области определения функции 𝑓 преобразует слово в 𝑤,
такое, что 𝑤 = 𝑓(𝑉).
Принципы нормализации алгоритма Маркова:
Для нахождения значений функции в некотором алфавите тогда и
только тогда существует алгоритм, когда функция нормально
вычислима.
Теорема: следующие классы функций (заданы на расширенном
натуральном ряде и принимают значения с расширенного
натурального ряда) совпадают:
1. Класс функций, вычислимых по Тьюрингу
2. Класс частично рекурсивных функций
3. Класс нормально вычислимых функций
Неразрешимые алгоритмические проблемы:
1. Проблема распознавания выводимости в математической логике:
для любых двух формул 𝐴 и 𝐵 в логическом исчислении узнать,
существует ли дедуктивная цепочка, ведущая от формулы 𝐴 к
формуле 𝐵
Теорема Чёрча: проблема распознавания выводимости
алгоритмически не разрешима.
2. Проблема распознавания самоприменимости.
𝐴 = {𝑎0 , 𝑎1 , … , 𝑎𝑛 }, 𝑎𝑛 → 1𝑛 , … , 𝑎0 → 1𝑛+1 ;
𝑄 = {𝑞0 , 𝑞1 , … , 𝑞𝑚 }, 𝑞0 → 1𝑛+2 , … , 𝑞𝑚 → 1𝑛+𝑚+2
Л → 1𝑛+𝑚+3 , Н → 1𝑛+𝑚+4 , П → 1𝑛+𝑚+5
𝑁(𝑎𝑖 ), 𝑁(𝑞𝑖 ), 𝑁(𝐷) – код символа.
𝑞𝑘 𝑎𝑗 → 𝑎𝑖 𝐷𝑞𝑚 ⟺ 𝑁(𝑞𝑘 ) ∗ 𝑁(𝑎𝑗 ) → 𝑁(𝑎𝑖 ) ∗ 𝑁(𝐷) ∗ 𝑁(𝑞𝑚 )
𝑁(𝑞𝑘 , 𝑎𝑖 ) - код команды.
Тогда наша программа – совокупность команд 𝑁(𝑇)
На вход машины Тьюринга Т отправляем 𝑁(𝑇)
1) если машина Тьюринга применима к своему коду –
самопримаенимая
2) если начиная работу над своим кодом машина Тьюринга циклит
– несамоприменимая
Таким образом все машины Тьюринга, работающие в алфавите
{1,∗} делятся на 2 класса: самоприменимые и
несамоприменимые.
Проблема самоприменимости состоит в следующем: построить
такой алгоритм, который по коду машины Тьюринга Т давал бы
однозначный ответ самоприменима машина Т или нет (без
запуска).
Для решения проблемы необходимо построить машину 𝐿 в
алфавите {1,∗ ,0}, которая, работая над кодом машины Тьюринга
Т, останавливалась и выдавала 1, самоприменима, или 0.
Теорема: проблема самоприменимости алгоритмически не
разрешена.
Доказательство: предположим противное: пусть существует
машина 𝐿, решающая проблему самоприменимости. Опираясь на
неё, построим машину Тьюринга 𝐿̃, которая:
1) применима к кодам несамоприменимых машин Тьюринга,
2) не применима к кодам самоприменимых машин Тьюринга.
Для этого:
1) все команды машины 𝐿 объявляем командами машины 𝐿̃;
2) заключительное состояние 𝑞0 машины 𝐿 объявляем не
заключительным для машины 𝐿̃;
3) добавляем заключительное состояние 𝑞0′ для 𝐿̃ и команды:
𝑞0 0 → 0Н𝑞0′
𝑞0 1 → 1Н𝑞0
̃
Машина 𝐿 работает над кодами всех машин, в том числе и на
своим.
Пусть
1) машина Тьюринга 𝐿̃ самоприменима, то есть применима к
своему коду, но она не применима к кодам самоприменимых
машин, значит является несамоприменимой.
Получено противоречие.
2) машина Тьюринга 𝐿̃ несамоприменима, но она применима к
кодам несамоприменимых машин, значит самоприменима.
Получено противоречие.
3. Проблема применимости.
Машина Тьюринга работает в алфавите 𝐴 = {1,∗}, 𝐵 - слово.
Требуется по коду машины Тьюринга Т и слову 𝐵 определить,
применима ли машина Тьюринга к слову 𝐵 или нет. В разработке
такого алгоритма и заключается проблема применимости:
построить машину Тьюринга 𝐿, на вход которой поступает
𝑁(𝑇)𝑎0 𝐵. В результате 1, если машина применима, иначе 0.
Теорема: проблема применимости алгоритмически неразрешима.
Доказательство: предположим противное: пусть машину Тьюринга
𝐿 можно построить, тогда наш код - это машина 𝐿. Подадим слово
𝑁(𝑇)𝑎0 𝑁(𝑇), тогда машина 𝐿 решала бы проблему
самоприменимости, а она алгоритмически неразрешима.
4. Проблема определения общей рекурсивности алгоримов, т.е.
проблема определения того, ко всяким ли допустимым в начале
данным применим данный алгоритм.
𝐴1 , … , 𝐴𝑥 , … , 𝐴𝑛 – алгоритм. Нужно построить 𝐵(𝑥), на вход
которой бы поступал номер алгоритма 𝑥. В результате: 1 –
алгоритм всюду определён, 0 – алгоритм 𝐴𝑥 не является общим.
Лемма: для любого перечисления любого множества Φ
общерекурсивных функций существует функция, не входящая в это
перечисление.
Доказательство: рассмотрим все общерекурсивные функции
𝐴1 , … , 𝐴𝑥 , … и функцию 𝐹(𝑥) = 𝐴𝑥 (𝑥) + 1,
𝐹(𝑥) − общерекурсивная.
Будем предполагать, что 𝐹 ∈ Φ, тогда 𝐹 в нашем перечислении
имеет номер 𝑥0 , тогда 𝐹 совпадает с 𝐴𝑥0 , но 𝐹(𝑥0 ) = 𝐴𝑥0 (𝑥0 ) + 1.
Получено противоречие.
Теорема: проблема определения общерекурсивных функций
алгоритмически неразрешима.
Доказательство: предположим противное: пусть алгоритм 𝐵,
решающий проблему, существует, тогда он определяет
общерекурсивную функцию 𝐹. На основании 𝐹 построим
общерекурсивную функцию следующего вида:
𝑔(0) = 𝜇𝑦 [𝑓(𝑦) = 1]
𝑔(𝑥 + 1) = 𝜇𝑦 [𝑦 ≥ 𝑔(𝑥) ∧ 𝑓(𝑦) = 1]
Построенная функция 𝑔 перечисляет все общерекурсивные
функции, а так как множество общерекурсивных функций не
является счётным, то получили противоречие.
Теория графов.
Основные понятия и определения.
Графом 𝐺 называется пара 𝑆, 𝑈, 𝐺 = (𝑆, 𝑈), где 𝑆 - это множество
вершин (в начальном варианте считается конечным и непустым), 𝑈 бинарное отношение, заданное на 𝑆, - множество дуг. Элементы
множества (𝑎, 𝑏) - упорядоченные пары – дуги, где 𝑎 - начало, 𝑏 конец.
Вершины, соединённые дугой, называют инцидентными дуге. Между
собой – смежными (соединенными одной дугой).
Дуги, имеющие общую вершину, - смежные.
Граф 𝐺 = (𝑆, 𝑈) называется ориентированным (орграфом), если
∃(𝑎, 𝑏) ∈ 𝑈: (𝑏, 𝑎) ∉ 𝑈
Если ∀(𝑎, 𝑏) ∈ 𝑈 ⇒ (𝑏, 𝑎) ∉ 𝑈 в этом случае граф называют
неориентированным (неоргаф).
{(𝑎, 𝑏), (𝑏, 𝑎)} = [𝑎, 𝑏] - ребро, без направления.
Если необходимо представить объекты, связанные несколькими
связями, используют мультиграф.
Граф, не содержащий кратных дуг и петель называется простым
графом.
Если дугам или вершинам необходимо приписать числа, то речь идёт
о взвешенном графе.
Для взвешенного графа 𝐺 = (𝑆, 𝑈):
𝑓: 𝑆 → 𝐻𝑠 - функция распределения меток вершин, 𝐻𝑠 - множество
значений; 𝑓: 𝑈 → 𝐻𝑈 - функция распределения меток дуг, 𝐻𝑈 множество значений.
Простой граф, в котором каждая пара вершин является смежной,
называется полным графом.
Пусть 𝑆1 , … , 𝑆𝑛 ⊆ 𝑆, если 𝑆1 ∪ … ∪ 𝑆𝑛 = 𝑆, то тогда это множество
подмножеств {𝑆1 , … , 𝑆𝑛 } называется покрытием 𝑆.
Граф называется двудольным, если существует такое разбиение
множества вершин на два подмножества (доли), что концы каждого
ребра принадлежат разным подмножествам (долям), если при этом
любые две вершины, входящие в разные дуги, являются смежными, то
граф называется полным двудольным графом.
Полный двудольный граф, содержащий в одной доле один элемент –
звезда.
Рассмотрим графы 𝐺 = (𝑆, 𝑈), 𝐺′ = (𝑆 ′ , 𝑈 ′ ).
Графы называются гомоморфными, если существует отображение
𝜑: 𝑆 → 𝑆 ′ (гомоморфизмом) со свойством:
(𝑎, 𝑏) ∈ 𝑈 ⇒ (𝜑(𝑎), 𝜑(𝑏)) ∈ 𝑈 ′
Если (𝑎, 𝑏) ∈ 𝑈 ⇔ (𝜑(𝑎), 𝜑(𝑏)) ∈ 𝑈 ′ , то 𝜑 - изоморфизм, а графы 𝐺 и
𝐺′ изоморфные.
Способы задания графов.
1. Графически
2. Матрица смежности.
𝐺 = (𝑆, 𝑈), 𝑆 = {𝑎1 , … , 𝑎𝑛 }; матрицей смежности 𝐴𝐺 называется
матрица 𝑛 ∗ 𝑛, в которой элемент 𝑎𝑖𝑗 =
1, если есть дуга 𝑎𝑖 𝑎𝑗
[
0, если дуга 𝑎𝑖 𝑎о отсуствует
Для мультиграфов: 𝑎𝑖𝑗 = 𝑘, 𝑘 - число дуг, связывающих 𝑎𝑖 и 𝑎𝑗
Для взвешенных графов
𝑔(𝑎𝑖 , 𝑎𝑗 ) − вес дуги, (𝑎𝑖 , 𝑎𝑗 ) ∈ 𝑈
𝑎𝑖𝑗 = [
𝜃, (𝑎𝑖 , 𝑎𝑗 ) ∉ 𝑈
Рангом графа называется ранг его матрицы смежности.
Собственным значением графа называется собственное
значение матрицы смежности.
Спектром графа называется спектр его матрицы смежности.
3. Матрица инцидентности
𝑆 = {𝑎1 , … , 𝑎𝑛 },
𝑈 = {𝑈1 , … , 𝑈𝑙 }
Строим матрицу инцидентности 𝐼(𝐺)
𝐼𝑖𝑒 − элементы марицы
1, 𝑎𝑖 инцидентно 𝑈𝑖
для неоргафов 𝐼𝑖𝑒 = {
0, в противном случае
𝐼(𝐺)𝑚∗𝑙 :
1, 𝑎𝑖 − начало, 𝑈𝑙 − конец
для оргафов 𝐼𝑖𝑒 = {0, отсутсвует инцедентность
−1, 𝑎𝑖 − конец, 𝑈𝑙 − начало, не петля
4. Структура смежности
Для дуги (𝑎𝑖 , 𝑎𝑗 ): 𝑎𝑖 – предшественник (предок), 𝑎𝑗 –
последователь (потомок).
Выписываем вершины и их прямых последователей.
Подграфы. Операции над графами.
Определение: граф 𝐺′ = (𝑆 ′ , 𝑈 ′ ) называется подграфом графа 𝐺 =
(𝑆, 𝑈), если 𝑆 ′ ⊆ 𝑆, 𝑈 ′ ⊆ 𝑈 ∩ (𝑆 ′ )2
Операции над графами:
1. Добавление вершины 𝑎
𝐺′ = (𝑆 ∪ {𝑎}, 𝑈)
2. Добавление дуги (𝑎, 𝑏)
𝐺′ = (𝑆 ∪ {𝑎, 𝑏}, 𝑈 ∪ (𝑎, 𝑏))
3. Удаление дуги (𝑎, 𝑏)
𝐺 ′ = (𝑆, 𝑈 ∖ {(𝑎, 𝑏)})
4. Удаление вершины 𝑎
𝐺 ′ = (𝑆 ∖ {𝑎}, 𝑈 ∖ {(𝑎, 𝑏), (𝑏, 𝑎)})
5. Отождествление вершин 𝑎, 𝑏
𝑆 ′ = (𝑆 ∖ {𝑎, 𝑏}) ∪ {𝑎′}
𝑈 ′ = (𝑈 ∖ {(𝑎, 𝑏), (𝑐, 𝑏), (𝑏, 𝑐)})
(𝑎, 𝑐), (𝑏, 𝑐),
∪ {(𝑎, 𝑐 ′ ), (𝑐, 𝑎′):
∈ 𝑈}
(𝑐, 𝑎), (𝑐, 𝑏)
Если 𝑎 и 𝑏 были связаны дугой, то операция отождествления
называется операцией стягивания вершины.
6. Объединение графов 𝐺1 = (𝑆1 , 𝑈1 ) и 𝐺2 = (𝑆2 , 𝑈2 )
𝐺 = 𝐺1 ∪ 𝐺2 = (𝑆1 ∪ 𝑆2 , 𝑈1 ∪ 𝑈2 )
7. Пересечение графов 𝐺1 = (𝑆1 , 𝑈1 ) и 𝐺2 = (𝑆2 , 𝑈2 )
𝐺 = 𝐺1 ∩ 𝐺2 = (𝑆1 ∩ 𝑆2 , 𝑈1 ∩ 𝑈2 )
8. Кольцевая сумма графов 𝐺1 = (𝑆1 , 𝑈1 ) и 𝐺2 = (𝑆2 , 𝑈2 )
𝐺 = 𝐺1 ⊕ 𝐺2 = (𝑆1 ∪ 𝑆2 , (𝑈1 \𝑈2 ) ∪ (𝑈2 \𝑈1 ))
Маршруты. Цепи. Циклы.
𝐺 = (𝑆, 𝑈)
Последовательность вершин 𝑎1 , … , 𝑎𝑛 и соединяющих их дуг
𝑈1 , … , 𝑈𝑛−1 называется маршрутом из 𝑎1 в 𝑎𝑛 .
𝑎1 𝑈1 𝑎2 𝑈2 … 𝑈𝑛−1 𝑎𝑛
Число дуг 𝑛 − 1 называется длиной маршрута.
Пусть 𝐺 неориентированный граф (без петель).
Маршрут называется цепью, если все его ребра 𝑈1 =
[𝑎1 , 𝑎2 ], … , 𝑈𝑛−1 = [𝑎𝑛−1 , 𝑎𝑛 ] различны.
Простой цепью, если при этом все его вершины (кроме, возможно,
первой и последней) различны.
Маршрут называется циклическим, если 𝑎1 совпадает с 𝑎𝑛 .
Циклическая цепь называется циклом. Циклическая простая цепь –
простым циклом.
Замечание: для ориентированного графа вводится понятие
ориентированного маршрута. Аналогом цепи в этом случае служит
путь. Аналогом цикла – контур.
Утверждения:
 При 𝑎𝑖 ≠ 𝑎𝑗 всякий маршрут, соединяющий эти вершины,
содержит простую цепь, соединяющую эти вершины.
 Всякий цикл содержит простой цикл
 Объединение двух несовпадающих простых цепей, соединяющих
𝑎 и 𝑏, содержит простой цикл.
 Пусть 𝐶 и 𝐷 два несовпадающих простых цикла, имеющих общее
ребро 𝑈, тогда граф , получаемый путем объединения 𝐶 и 𝐷 и
удаления дуги 𝑈, содержит так же простой цикл.
𝐶\𝑈 и 𝐷\𝑈 - подцепи, 𝐶\𝑈 ∪ 𝐷\𝑈 - цепь, по предыдущему
утверждению.
 Две вершины 𝑎 и 𝑏 неориентированного графа 𝐺 называются
связными, если существует маршрут (⇒ цепь) из ребер графа, в
котором одна из этих вершин является началом, вторая – концом.
Таким образом на множестве вершин графа 𝑆 можно ввести
бинарное отношение 𝜌, такое, что пара вершин (𝑎, 𝑏) ∈ 𝜌 ⟺ 𝑎 и 𝑏
связны.
Данное отношение 𝜌 является отношением эквивалентности. И
позволяет разбить множество 𝑆 на непересекающиеся классы
эквивалентности 𝑆 = 𝑆1 ∪ … ∪ 𝑆𝑛 ,каждый из которых называется
множеством связности.
В этом случае подграф 𝐺𝑖 = (𝑆𝑖 , 𝑈𝑖 ), где 𝑈𝑖 - все дуги исходного
графа, связывающие вершины 𝑆𝑖 , называется компонентой
связного графа.
Граф называется связным, если он содержит ровно одну компоненту
связности.
Метрические характеристики графа.
𝐺 = (𝑆, 𝑈) – связный неориентированный граф.
Расстояние – длина кратчайшего маршрута.
Введенное таким образом расстояние 𝜌: 𝑆 ∗ 𝑆 → 𝑅:
1. 𝜌(𝑎, 𝑏) ≥ 0; 𝜌(𝑎, 𝑏) = 0 ⇔ 𝑎 = 𝑏
2. 𝜌(𝑎, 𝑏) = 𝜌(𝑏, 𝑎)
3. 𝜌(𝑎, 𝑏) ≤ 𝜌(𝑎, 𝑐) + 𝜌(𝑏, 𝑐) ∀𝑐 ∈ 𝑆
Если 𝑆 = {𝑎1 , … , 𝑎𝑛 } можно ввести матрицу расстояний
𝑅 = 𝑟𝑖𝑗 = 𝜌(𝑎𝑖 , 𝑎𝑗 )
Эксцентриситет вершины 𝑒(𝑎) это максимальное из расстояний из
вершины 𝑎 до всех других вершин.
𝑒(𝑎) = 𝑚𝑎𝑥{𝜌(𝑎, 𝑏), 𝑏 ∈ 𝑆}
Диаметр графа 𝑑(𝐺) - это максимальный из всех эксцентриситетов.
Радиус графа 𝑟(𝐺) - это минимальный из всех эксцентриситетов.
Вершина называется периферийной, если её эксцентриситет
совпадает с диаметром.
Вершина называется центральной, если её эксцентриситет совпадает с
радиусом.
Взвешенные графы.
Пусть 𝜔𝑖𝑗 – вес дуги (𝑎𝑖 , 𝑎𝑗 ). Если есть маршрут связывающий 𝑎1 , … , 𝑎𝑙 ,
то тогда длина этого маршрута 𝜇(𝑎1 , 𝑎𝑙 ) = 𝜔12 + 𝜔23 + ⋯ + 𝜔𝑙−1,𝑙 ,
Тогда взвешенным расстоянием между вершинами 𝑎 и 𝑏 – это
минимум из длин 𝜌𝜔 (𝑎, 𝑏) = 𝑚𝑖𝑛 𝜌(𝑎, 𝑏)
Эксцентриситет – максимальное из всех взвешенных расстояний
𝑒𝜔 (𝑎) = 𝑚𝑖𝑛{𝜌𝜔 (𝑎, 𝑏), 𝑏 ∈ 𝑆}
𝑎 взвешенной центральной вершиной, если её эксцентриситет
минимальный из всех возможных:
𝑒𝜔 (𝑎) = 𝑚𝑖𝑛{𝑒(𝑎′ ), 𝑎′ ∈ 𝑆}
Нахождение кратчайшего пути.
𝐺 = (𝑆, 𝑈) – взвешенный ориентированный граф.
Рассмотрим вершины 𝑆 и 𝑡 (есть хотя бы один путь).
Алгоритм Дейкстра нахождения кратчайшего пути.
Этап 1. Нахождение длины кратчайшего пути.
ШАГ 1.Присвоение начальных меток: 𝑑(𝑆) = 0∗ ; 𝑑(𝑥𝑖 ) = ∞, 𝑥𝑖 ≠ 𝑆;
𝑥̃ = 𝑆 - текущая вершина.
ШАГ 2.Изменение меток: для всех вершин 𝑥𝑖 , непосредственно
следующих за вершиной 𝑥̃, с временными метками, меняем метки в
соответствие со следующим правилом:
𝑑нов (𝑥𝑖 ) = 𝑚𝑖𝑛{𝑑стар (𝑥𝑖 ); 𝑑(𝑥̃) + 𝜔(𝑥̃, 𝑥𝑖 )}
ШАГ 3.Превращение меток из временной в постоянную: из всех
вершин с временными метками выбираем 𝑥𝑗 ∗
𝑑(𝑥𝑗 ∗ ) = 𝑚𝑖𝑛{𝑑(𝑥𝑖 ); 𝑑(𝑥)}
(𝑑(𝑥) – временная, 𝑑(𝑥𝑖 )∗ - постоянная)
𝑥̃ ≔ 𝑥𝑗 ∗
ШАГ 4.Проверка на завершение первого этапа.
Если 𝑥̃ = 𝑡, то 𝑑(𝑥̃) – длина кратчайшего пути, иначе переход к шагу 2.
Этап 2. Построение кратчайшего пути.
Среди вершин непосредственно предшествующих вершине 𝑥̃ находим
такую 𝑥𝑖 , что 𝑑(𝑥̃) = 𝑑(𝑥𝑖 ) + 𝜔(𝑥𝑖 , 𝑥̃). Дугу (𝑥𝑖 , 𝑥̃) включаем в
кратчайший маршрут. После 𝑥𝑖 ↦ 𝑥̃, до тех пор, пока 𝑥̃ ↦ 𝑆.
Определения:
Дерево - связный неориентированный граф, не содержащий циклов.
Лес – циклический неориентированный граф.
Ориентированный граф называется ориентированным деревом, если
существует ровно одна вершина, корень, не имеющая
предшественников, и любой вершине, отличной от корня,
предшествует ровно ода вершина.
Основные числа теории графов.
1. Хроматическое число графа.
𝐺 = (𝑆, 𝑈) – неориентированный граф без петель.
Граф 𝐺 называется правильно раскрашенным, если каждой его
вершине приписан какой-либо цвет, а две соседние вершины
окрашены в разные цвета. Минимальное число цветов, в которое
может быть окрашен правильно раскрашенный граф, называется
хроматическим числом графа 𝑋(𝐺). Если 𝑋(𝐺) = 𝑘, тогда 𝐺
называют 𝑘 − хроматическим.
Теорема: для того, чтобы связный неориентированный граф без
петель являлся бихроматическим необходимо и достаточно, чтобы
он не содержал простых циклов нечетной длины.
Доказательство:
I Необходимость
Пусть 𝐺 – бихроматический.
Предположим противное: пусть в нем содержится простой цикл
нечётной длины
Получено противоречие.
II Достаточность
Пусть 𝐺 не содержит простых циклов нечетной длины
Удаляем ребра в циклах так, чтобы удалить
циклы и граф 𝐺 стал деревом 𝐺 ′
𝐺 ′ - бихроматический
В силу четности циклов вершины, которые
соединяют удалённые ребра, буду
окрашены в разные цвета. И поэтому
правильная раскраска графа не нарушится. ч.т.д.
Рассмотрим некоторую вершину 𝑎. Через 𝑃(𝑎) обозначим степень
вершины, то есть число инцидентных ей ребер (если при это
вершина содержит петлю, то считаем её дважды).
𝑃(1) = 2
Если стеки всех вершин графа чётные, то граф
называют чётным.
Через 𝑃(𝑞) обозначим наибольшую из степеней
вершин графа.
Тогда справедлива Теорема:
Для любого неориентированного графа справедлива следующая
оценка: 𝑋(𝐺) = 𝑃(𝐺) + 1.
Определение: плоским называется граф, вершины которого
являются точками плоскости, а ребра – непрерывными плоскими
линиями без самопересечения, такими, что никакие 2 ребра не
имеют общих точек, кроме инцидентных или общих вершин.
Любой граф изоморфный плоскому называют планарным графом.
Гипотеза: всякий планарный граф можно раскрасить не более чем 4
красками.
Если окрашены уже вершины 𝑥1 , … , 𝑥𝑛 , то новые произвольно
взятые вершины 𝑥𝑘+1 мы приписываем минимальный из цветов, в
который не окрашены соседние с ней вершины.
2. Число внутренней и внешней устойчивости.
𝐺 = (𝑆, 𝑈) - ориентированный граф.
Рассмотрим 𝑆: ∀𝑥 ∈ 𝑆 Г𝑥 = {𝑦 ∈ 𝑆: ∃(𝑥, 𝑦) ∈ 𝑈};
Г − 𝑥 = {𝑦 ∈ 𝑆: ∃(𝑦, 𝑥) ∈ 𝑈}
Подмножество вершин J называется внутренне устойчивым, если
∀𝑥 ∈ 𝑆: Г𝑥 ∩ J = ∅, то есть множество J не содержит соседние
вершины.
Числом внутренней устойчивости графа 𝐺 называется
𝛼(𝐺) = 𝑚𝑎𝑥 |J| - максимальная мощность внутренней
устойчивости
Подмножество E вершин графа называется внешне устойчивым
множеством, если ∀𝑥 ∈ 𝑆: Г𝑥 ∩ E ≠ ∅
3. Цикломатическое число графа
𝑈 =𝑚−𝑛+𝑝
𝑚 - число дуг, 𝑛 – число вершин, 𝑝 - число компонентов связности
Транспортные сети.
Говорят, что задана транспортная сеть, если заданы 2 объекта:
 Ориентированный связный граф 𝐺, обладающий следующими
свойствами
 𝐺 не содержит циклов
 ∃! 𝑆 - источник, не имеющая предшественников, Г𝑆−1 = ∅
 ∃! 𝑡 – сток, не имеющая последователей, Г𝑡 ≠ ∅
 Функция 𝐶, действующая из множества дуг в расширенный
натуральный ряд, 𝐶: 𝑈 → 𝑁∪{0} ,
𝐶(𝑈) = 𝐶(𝑥𝑖 , 𝑥𝑗 ) = 𝐶𝑖𝑗 - пропускная способность дуги.
−
𝑈 (𝑥) – множество дуг, входящих в 𝑥
𝑈 + (𝑥) – множество дуг, исходящих из 𝑥
Функция 𝜑: 𝑈 → 𝑁∪{0} , называется потоком, если


0 ≤ 𝜑(𝑈) ≤ 𝐶(𝑈)
∀𝑥 ∈ 𝑆, 𝑥 ≠ 𝑡, 𝑥 ≠ 𝑆 справедливо условие баланса
∑
𝜑(𝑈) =
𝑈∈𝑈 − (𝑥)
∑
Доказательство: докажем, что величина потока 𝜑𝑡 для любого разреза
есть
𝜑𝑡 = ∑ 𝜑(𝑈) − ∑ 𝜑(𝑈)
𝜑(𝑈)
𝑈∈𝑈 + (𝑥)

∑
𝜑(𝑈) =
∑
𝜑(𝑈)
𝑈∈𝑈 − (𝑡)
𝑈∈𝑈 + (𝑆)
̃𝐴̅ − (𝐴̅, 𝐴)
𝑈𝐴 − (𝐴, 𝐴̅); 𝑈
Рассмотрим 𝐴\{𝑆} тогда ∀ 𝑉 ∈ 𝐴\{𝑆} справедливо условие:
Тогда величина
∑
𝜑𝑡 =
∑
𝜑(𝑈) =
𝑈∈𝑈 − (𝑡)
̃𝐴
𝑈∈𝑈
̅
𝑈∈𝑈𝐴
∑
𝜑(𝑈)
∑
𝑈∈𝑈 + (𝑆)
- величина потока
Поток 𝜑 называется максимальным, если его величина 𝜑
̂𝑡 ≥ 𝜑𝑡 ∀𝜑.
Величина ∆𝑈 = 𝐶(𝑈) − 𝜑(𝑈) - остаточная пропускная способность
дуги 𝑈, если ∆𝑈 = 0, дуга называется насыщенной; а поток 𝜑, из
которого каждый путь, идущий из 𝑆 в 𝑡 содержит хотя бы одну
насыщенную дугу называется полным потоком.
Рассмотрим некоторое подмножество вершин графа 𝐴.
𝐴 ⊆ 𝑆, 𝐴̅ = 𝑆/𝐴
Множество дуг, начало которых лежит в множестве 𝐴, а концы в
множестве 𝐴̅, называется ориентированным разрезом:
(𝐴, 𝐴̅), 𝐴 − 𝐴̅ – разрез
Пропускной способностью (величиной) разреза называется
∑ 𝐶(𝑈)
̃𝐴
𝑈∈𝑈
̃𝐴 = {(𝑥𝑖 , 𝑥𝑗 ): 𝑥𝑖 ∈ 𝐴, 𝑥𝑗 ∈ 𝐴̅}, называется 𝑆 − 𝑡– разрезом,
Сам разрез 𝑈
если 𝑆 ∈ 𝐴, 𝑡 ∈ 𝐴̅.
̃𝐴 называется минимальным, если его пропускная
𝑆 − 𝑡– разрез 𝑈
̃𝐵
способность меньше любого 𝑆 − 𝑡– разреза 𝑈
̃𝐴 ) < 𝐶(𝑈
̃𝐵 )
𝐶(𝑈
Теорема: пусть множество вершин 𝐴 ⊆ 𝑆, 𝑆 ∈ 𝐴, 𝑡 ∈ 𝐴̅, тогда для
̃𝐴 )
любого потока 𝜑 справедливо: 𝜑𝑡 ≤ 𝐶(𝑈
𝜑(𝑈) −
∑
∑
𝜑(𝑈) = 0
𝑈∈𝑈 − (𝑉)
𝑈∈𝑈 + (𝑉)
𝜑(𝑈) − ∑
∑
𝜑(𝑈) = 0
𝑉∈𝐴\{𝑆} 𝑈∈𝑈 − (𝑉)
𝑉∈𝐴\{𝑆} 𝑈∈𝑈 + (𝑉)
Включим 𝑆, прибавка только в первую сумму на величину потока:
∑
∑
𝜑(𝑈) − ∑
∑
𝜑(𝑈) = 𝜑𝑡 =
𝑉∈𝐴 𝑈∈𝑈 − (𝑉)
𝑉∈𝐴 𝑈∈𝑈 + (𝑉)
∑
𝜑(𝑈)
𝑈∈𝑈 + (𝑆)
Если начальная и конечная вершина дуги графа принадлежит
множеству 𝐴, то потоки по этим дугам учитываются в первой и второй
суммах, и поэтому взаимно уничтожаются, откуда и следует искомое
соотношение:
̃𝐴 )
𝜑𝑡 = ∑ 𝜑(𝑈) − ∑ 𝜑(𝑈) ≤ ∑ 𝜑(𝑈) ≤ ∑ 𝐶(𝑈) = 𝐶(𝑈
𝑈∈𝑈𝐴
̃𝐴
𝑈∈𝑈
̅
̃𝐴
𝑈∈𝑈
̃𝐴
𝑈∈𝑈
Следствие:
1) Теорема Форда Фалкерсона:
Если для некоторого потока и разреза выполняется равенство:
̃𝐴 ), то 𝜑𝑡 − 𝑚𝑎𝑥, 𝐶(𝑈
̃𝐴 ) − 𝑚𝑖𝑛.
𝜑𝑡 = 𝐶(𝑈
2) Если для некоторого потока 𝜑 и 𝑡– разреза выполняется
̃𝐴 ),
̃𝐴
𝜑𝑡 = 𝐶(𝑈
𝜑(𝑈) = 𝐶(𝑈)
∀𝑈 ∈ 𝑈
все дуги, входящие в этот разрез должны быть насыщенными,
и наоборот.
Доказательство: 1) пусть 𝜑 ∗ - максимальный поток, 𝜑𝑡∗ - величина
данного потока, необходимо найти разрез равный 𝜑𝑡∗ . Докажем, что
̃𝐴∗ ) .
существует такой (𝐴∗ , ̅̅̅
𝐴∗ ) разрез: 𝜑𝑡∗ = 𝐶(𝑈
∗
Строим множество 𝐴 :
1)разрез должен быть 𝑆 − 𝑡– разрезом, поэтому 𝑆 ∈ 𝐴∗
2)если вершина 𝑖 попала в
2а) 𝐴∗ и есть дуга (𝑖, 𝑗) ∈ 𝑈, по которой 𝑈 ∗(𝑖,𝑗) < 𝐶𝑖𝑗 , то тогда 𝑗 ∈ 𝐴∗
2б) 𝐴∗ и (𝑗, 𝑖) ∈ 𝑈 причём 𝑈 ∗(𝑗,𝑖) > 0, то 𝑗 ∈ 𝐴∗ .
̃𝐴∗ является 𝑆 − 𝑡– разрезом:
Покажем, что разрез 𝑈
∗
𝑆 ∈ 𝐴 по условию, покажем, что 𝑡 ∈ ̅̅̅
𝐴∗ .
Предположим противное: пусть 𝑡 попала в 𝐴∗ , тогда существует путь
(цепь) из 𝑆 в 𝑡, все вершины которого лежат в 𝐴∗ , тогда рассмотрим 2
соседние вершины (все пары) 𝑖𝑘 и 𝑖𝑘+1. Для всех дуг, соединяющие эти
вершины, посчитаем:
𝐶𝑖𝑘,𝑖𝑘+1 − 𝜑 ∗ 𝑖 ,𝑖 , 𝑖𝑘+1 попала в 𝐴∗ по причине 2а
𝑘 𝑘+1
𝜃(𝑖𝑘 , 𝑖𝑘+1 ) = { ∗
𝜑 𝑖 ,𝑖 , 𝑖𝑘+1 попала в 𝐴∗ по причине 2б
𝑘 𝑘+1
Теперь в качестве 𝜃 = 𝑚𝑖 𝑛{𝜃(𝑖𝑘 , 𝑖𝑘+1 )} и построим другой поток.
Поток по каждой прямой дуге, попавшей по причине 2а увеличим на
𝜃, по причине 2б – уменьшим на 𝜃.
Тогда мы построим новый поток, условие баланса не нарушено:
𝜑𝑡 = 𝜑𝑡∗ + 𝜃 > 𝜑𝑡∗
Получено противоречие.
Покажем, что величина разреза совпадает с величиной потока.
̃𝐴∗ - лежащие в разрезе:
Рассмотрим дуги (𝑖, 𝑗) ∈ 𝑈
∗
∗
1) 𝜑 𝑖𝑗 ≤ 𝐶𝑖𝑗 , если 𝜑 𝑖𝑗 < 𝐶𝑖𝑗 согласно 2а 𝑗 ∈ 𝐴∗ - противоречие.
⟹ 𝜑 ∗ 𝑖𝑗 = 𝐶𝑖𝑗 – насыщенная.
2) 𝜑 ∗ 𝑖𝑗 ≥ 0, 𝜑 ∗ 𝑖𝑗 > 0, согласно 2б 𝑗 ∈ 𝐴∗ - противоречие,
⟹ 𝜑 ∗ 𝑖𝑗 = 0 для всех вершин.
⟹ по теореме
𝜑𝑡∗ = ∑ 𝜑 ∗ (𝑈) − ∑ 𝜑 ∗ (𝑈) = ∑ 𝐶(𝑈) = 𝐶(𝑈𝐴∗ )
̃𝐴∗
𝑈∈𝑈
̃̅̅̅̅∗
𝑈∈𝑈
𝐴
𝑈∈𝑈𝐴∗
Download