4.1 Материалы модуля
4.2 k-перестановки из n элементов
4.3 Урновые схемы и схемы раскладки по ящикам.
4.4 Подсчет отображений конечных множеств
4.5 Рекуррентные соотношения
4.1 Материалы модуля
4.2 k-перестановки из n элементов
4.3 Урновые схемы и схемы раскладки по ящикам.
4.4 Подсчет отображений конечных множеств
4.5 Рекуррентные соотношения
The document discusses the benefits of exercise for mental health. Regular physical activity can help reduce anxiety and depression and improve mood and cognitive function. Exercise causes chemical changes in the brain that may help protect against mental illness and improve symptoms.
O documento discute a importância da vivência e da ludicidade na educação física para promover o desenvolvimento pessoal dos alunos. Ele propõe atividades de socialização, jogos cooperativos e dinâmicas de grupo para valorizar a autoconfiança, o respeito mútuo e as atitudes de cooperação, de acordo com teóricos como Vygotski e João Batista Freire.
Amazing Photography By Simona Smrckovamaditabalnco
The document discusses the benefits of exercise for mental health. Regular physical activity can help reduce anxiety and depression and improve mood and cognitive functioning. Exercise causes chemical changes in the brain that may help protect against mental illness and improve symptoms.
The document discusses the benefits of exercise for mental health. Regular physical activity can help reduce anxiety and depression and improve mood and cognitive functioning. Exercise causes chemical changes in the brain that may help protect against mental illness and improve symptoms for those who already suffer from conditions like anxiety and depression.
The document discusses the benefits of exercise for mental health. Regular physical activity can help reduce anxiety and depression and improve mood and cognitive function. Exercise causes chemical changes in the brain that may help protect against mental illness and improve symptoms.
O documento discute a importância da vivência e da ludicidade na educação física para promover o desenvolvimento pessoal dos alunos. Ele propõe atividades de socialização, jogos cooperativos e dinâmicas de grupo para valorizar a autoconfiança, o respeito mútuo e as atitudes de cooperação, de acordo com teóricos como Vygotski e João Batista Freire.
Amazing Photography By Simona Smrckovamaditabalnco
The document discusses the benefits of exercise for mental health. Regular physical activity can help reduce anxiety and depression and improve mood and cognitive functioning. Exercise causes chemical changes in the brain that may help protect against mental illness and improve symptoms.
The document discusses the benefits of exercise for mental health. Regular physical activity can help reduce anxiety and depression and improve mood and cognitive functioning. Exercise causes chemical changes in the brain that may help protect against mental illness and improve symptoms for those who already suffer from conditions like anxiety and depression.
A empresa de tecnologia anunciou um novo smartphone com câmera avançada, bateria de longa duração e processador rápido para competir no mercado. O dispositivo custará menos do que os principais concorrentes e estará disponível em várias cores para atender a diferentes gostos. A empresa espera que o novo aparelho ajude a aumentar sua participação no mercado de smartphones.
The document discusses concurrency and synchronization in distributed computing. It provides an overview of Petr Kuznetsov's research at Telecom ParisTech, which includes algorithms and models for distributed systems. Some key points discussed are:
- Concurrency is important due to multi-core processors and distributed systems being everywhere. However, synchronization between concurrent processes introduces challenges.
- Common synchronization problems include mutual exclusion, readers-writers problems, and producer-consumer problems. Tools for synchronization include semaphores, transactional memory, and non-blocking algorithms.
- Characterizing distributed computing models and determining what problems can be solved in a given model is an important area of research, with implications for distributed system design.
The document discusses weakly supervised learning from video and images using convolutional neural networks. It describes using scripts as weak supervision for learning actions from movies without explicit labeling. Methods are presented for jointly learning actors and actions from scripts, and for action learning with ordering constraints. The use of CNNs for object and action recognition in images is also summarized, including work on training CNNs using only image-level labels without bounding boxes.
This document discusses common C++ bugs and tools to find them. It describes various types of memory access bugs like buffer overflows on the stack, heap, and globals that can lead to crashes or security vulnerabilities. Threading bugs like data races, deadlocks, and race conditions on object destruction are also covered. Other undefined behaviors like initialization order issues, lack of sequence points, and integer overflows are explained. The document provides examples of each type of bug and emphasizes that undefined behavior does not guarantee a predictable result. It concludes with a quiz to find bugs in a code sample and links to additional reading materials.
AddressSanitizer, ThreadSanitizer, and MemorySanitizer are compiler-based tools that detect bugs like buffer overflows, data races, and uninitialized memory reads in C/C++ programs. AddressSanitizer instruments loads and stores to detect out-of-bounds memory accesses. ThreadSanitizer intercepts synchronization calls to detect data races between threads. MemorySanitizer tracks initialized and uninitialized memory using shadow memory to find uses of uninitialized values. The tools have found thousands of bugs with low overhead. Future work includes supporting more platforms and languages and detecting additional bug classes.
This document discusses common C++ bugs and tools to find them. It describes various types of memory access bugs like buffer overflows on the stack, heap, and globals that can lead to crashes or security vulnerabilities. Threading bugs like data races, deadlocks, and race conditions on object destruction are also covered. Other undefined behaviors like initialization order issues, lack of sequence points, and integer overflows are explained. The document provides examples of each type of bug and quizzes the reader to find bugs in a code sample. It recommends resources for further reading on debugging techniques and thread sanitizers that can detect races and data races.
This document provides examples and snippets of code for MapReduce, Pig, Hive, Spark, Shark, and Disco frameworks. It also includes two sections of references for related papers and Disco documentation. The examples demonstrate basic MapReduce jobs with drivers, mappers, and reducers in Java, Pig and Hive queries, Spark and Shark table operations, and a Disco MapReduce job.
1. Алгоритмы для NP-трудных задач
Лекция 11: FPT-алгоритмы
А. Куликов
Computer Science клуб при ПОМИ
http://logic.pdmi.ras.ru/∼infclub/
А. Куликов (Computer Science клуб) 11. FPT-алгоритмы 1 / 24
2. План лекции
1 Лемма о подсолнухе
Задача о минимальном множестве представителей
А. Куликов (Computer Science клуб) 11. FPT-алгоритмы 2 / 24
3. План лекции
1 Лемма о подсолнухе
Задача о минимальном множестве представителей
2 Динамическое программирование
Steiner tree problem
А. Куликов (Computer Science клуб) 11. FPT-алгоритмы 2 / 24
4. План лекции
1 Лемма о подсолнухе
Задача о минимальном множестве представителей
2 Динамическое программирование
Steiner tree problem
3 Итеративное сжатие
Задача об удалении нечетных циклов
А. Куликов (Computer Science клуб) 11. FPT-алгоритмы 2 / 24
5. Лемма о подсолнухе
План лекции
1 Лемма о подсолнухе
Задача о минимальном множестве представителей
2 Динамическое программирование
Steiner tree problem
3 Итеративное сжатие
Задача об удалении нечетных циклов
А. Куликов (Computer Science клуб) 11. FPT-алгоритмы 3 / 24
6. Лемма о подсолнухе
Лемма о подсолнухе
Определение
Подсолнухом с k лепестками (sunflower with k petals) называется
семейство из k (конечных) множеств, пересечения любых двух их
которых совпадают. Это пересечение называется центром (core)
цветка:
Si ∩ Sj = C для всех 1 ≤ i < j ≤ k .
А. Куликов (Computer Science клуб) 11. FPT-алгоритмы 4 / 24
7. Лемма о подсолнухе
Лемма о подсолнухе
Определение
Подсолнухом с k лепестками (sunflower with k petals) называется
семейство из k (конечных) множеств, пересечения любых двух их
которых совпадают. Это пересечение называется центром (core)
цветка:
Si ∩ Sj = C для всех 1 ≤ i < j ≤ k .
Лемма о подсолнухе (Sunflower Lemma)
В любом семействе, состоящем из более чем s!(k − 1)s множеств
размера не более s, найдется подсолнух с хотя бы k лепестками.
А. Куликов (Computer Science клуб) 11. FPT-алгоритмы 4 / 24
8. Лемма о подсолнухе
Доказательство
А. Куликов (Computer Science клуб) 11. FPT-алгоритмы 5 / 24
9. Лемма о подсолнухе
Доказательство
Индукция по s.
А. Куликов (Computer Science клуб) 11. FPT-алгоритмы 5 / 24
10. Лемма о подсолнухе
Доказательство
Индукция по s.
При s = 1 есть более k − 1 одноэлементных множеств. Любые k
из них составляют подсолнух (с пустым центром).
А. Куликов (Computer Science клуб) 11. FPT-алгоритмы 5 / 24
11. Лемма о подсолнухе
Доказательство
Индукция по s.
При s = 1 есть более k − 1 одноэлементных множеств. Любые k
из них составляют подсолнух (с пустым центром).
Пусть теперь s ≥ 2 и ℱ — семейство, содержащее более s!(k − 1)s
множеств размера не более s.
А. Куликов (Computer Science клуб) 11. FPT-алгоритмы 5 / 24
12. Лемма о подсолнухе
Доказательство
Индукция по s.
При s = 1 есть более k − 1 одноэлементных множеств. Любые k
из них составляют подсолнух (с пустым центром).
Пусть теперь s ≥ 2 и ℱ — семейство, содержащее более s!(k − 1)s
множеств размера не более s.
Рассмотрим максимальное семейство попарно не пересекающихся
множеств ������ = {A1 , . . . , At }.
А. Куликов (Computer Science клуб) 11. FPT-алгоритмы 5 / 24
13. Лемма о подсолнухе
Доказательство
Индукция по s.
При s = 1 есть более k − 1 одноэлементных множеств. Любые k
из них составляют подсолнух (с пустым центром).
Пусть теперь s ≥ 2 и ℱ — семейство, содержащее более s!(k − 1)s
множеств размера не более s.
Рассмотрим максимальное семейство попарно не пересекающихся
множеств ������ = {A1 , . . . , At }.
Если t ≥ k, то необходимый подсолнух найден.
А. Куликов (Computer Science клуб) 11. FPT-алгоритмы 5 / 24
14. Лемма о подсолнухе
Доказательство
Индукция по s.
При s = 1 есть более k − 1 одноэлементных множеств. Любые k
из них составляют подсолнух (с пустым центром).
Пусть теперь s ≥ 2 и ℱ — семейство, содержащее более s!(k − 1)s
множеств размера не более s.
Рассмотрим максимальное семейство попарно не пересекающихся
множеств ������ = {A1 , . . . , At }.
Если t ≥ k, то необходимый подсолнух найден.
Пусть t ≤ k − 1 и B = A1 ∪ · · · ∪ At . Тогда |B| ≤ s(k − 1) и B
пересекает любое множество семейства ℱ.
А. Куликов (Computer Science клуб) 11. FPT-алгоритмы 5 / 24
15. Лемма о подсолнухе
Доказательство
Индукция по s.
При s = 1 есть более k − 1 одноэлементных множеств. Любые k
из них составляют подсолнух (с пустым центром).
Пусть теперь s ≥ 2 и ℱ — семейство, содержащее более s!(k − 1)s
множеств размера не более s.
Рассмотрим максимальное семейство попарно не пересекающихся
множеств ������ = {A1 , . . . , At }.
Если t ≥ k, то необходимый подсолнух найден.
Пусть t ≤ k − 1 и B = A1 ∪ · · · ∪ At . Тогда |B| ≤ s(k − 1) и B
пересекает любое множество семейства ℱ.
Значит, найдется элемент x ∈ B, содержащийся в хотя бы
|ℱ| s!(k − 1)s
> = (s − 1)!(k − 1)s−1
|B| s(k − 1)
множествах семейства ℱ.
А. Куликов (Computer Science клуб) 11. FPT-алгоритмы 5 / 24
16. Лемма о подсолнухе
Доказательство (продолжение)
А. Куликов (Computer Science клуб) 11. FPT-алгоритмы 6 / 24
17. Лемма о подсолнухе
Доказательство (продолжение)
По индукционному предположению семейство
ℱx = {S ∖ {x} | S ∈ ℱ, x ∈ S}
содержит подсолнух с k лепестками.
А. Куликов (Computer Science клуб) 11. FPT-алгоритмы 6 / 24
18. Лемма о подсолнухе
Доказательство (продолжение)
По индукционному предположению семейство
ℱx = {S ∖ {x} | S ∈ ℱ, x ∈ S}
содержит подсолнух с k лепестками.
Добавив x к множествам этого подсолнуха, получим подсолнух
исходного семейства.
А. Куликов (Computer Science клуб) 11. FPT-алгоритмы 6 / 24
19. Лемма о подсолнухе Задача о минимальном множестве представителей
План лекции
1 Лемма о подсолнухе
Задача о минимальном множестве представителей
2 Динамическое программирование
Steiner tree problem
3 Итеративное сжатие
Задача об удалении нечетных циклов
А. Куликов (Computer Science клуб) 11. FPT-алгоритмы 7 / 24
20. Лемма о подсолнухе Задача о минимальном множестве представителей
Задача о d-множестве представителей
А. Куликов (Computer Science клуб) 11. FPT-алгоритмы 8 / 24
21. Лемма о подсолнухе Задача о минимальном множестве представителей
Задача о d-множестве представителей
В задаче о d -множестве представителей (d -hitting set problem) по
данному семейству множеств размера не более d каждое
необходимо найти множество из не более k элементов,
пересекающее каждое множество семейства.
А. Куликов (Computer Science клуб) 11. FPT-алгоритмы 8 / 24
22. Лемма о подсолнухе Задача о минимальном множестве представителей
Задача о d-множестве представителей
В задаче о d -множестве представителей (d -hitting set problem) по
данному семейству множеств размера не более d каждое
необходимо найти множество из не более k элементов,
пересекающее каждое множество семейства.
Правило упрощения: если k + 1 множество образуют подсолнух,
заменить их всех на центр цвета. Если подсолнуха нет, то
семейство содержит не более O(k d ) множеств.
А. Куликов (Computer Science клуб) 11. FPT-алгоритмы 8 / 24
23. Лемма о подсолнухе Задача о минимальном множестве представителей
Задача о d-множестве представителей
В задаче о d -множестве представителей (d -hitting set problem) по
данному семейству множеств размера не более d каждое
необходимо найти множество из не более k элементов,
пересекающее каждое множество семейства.
Правило упрощения: если k + 1 множество образуют подсолнух,
заменить их всех на центр цвета. Если подсолнуха нет, то
семейство содержит не более O(k d ) множеств.
Получили ядро для задачи о минимальном множестве
представителей, а значит, она принадлежит классу FPT.
А. Куликов (Computer Science клуб) 11. FPT-алгоритмы 8 / 24
24. Динамическое программирование
План лекции
1 Лемма о подсолнухе
Задача о минимальном множестве представителей
2 Динамическое программирование
Steiner tree problem
3 Итеративное сжатие
Задача об удалении нечетных циклов
А. Куликов (Computer Science клуб) 11. FPT-алгоритмы 9 / 24
25. Динамическое программирование Steiner tree problem
План лекции
1 Лемма о подсолнухе
Задача о минимальном множестве представителей
2 Динамическое программирование
Steiner tree problem
3 Итеративное сжатие
Задача об удалении нечетных циклов
А. Куликов (Computer Science клуб) 11. FPT-алгоритмы 10 / 24
26. Динамическое программирование Steiner tree problem
Steiner tree problem
А. Куликов (Computer Science клуб) 11. FPT-алгоритмы 11 / 24
27. Динамическое программирование Steiner tree problem
Steiner tree problem
Steiner tree problem заключается в нахождении по данному графу
G и множеству S из k его вершин дерева T минимального веса,
содержащего все вершины множества S. Вершины множества S
называются терминалами (termianl).
А. Куликов (Computer Science клуб) 11. FPT-алгоритмы 11 / 24
28. Динамическое программирование Steiner tree problem
Steiner tree problem
Steiner tree problem заключается в нахождении по данному графу
G и множеству S из k его вершин дерева T минимального веса,
содержащего все вершины множества S. Вершины множества S
называются терминалами (termianl).
Задача очень похожа на задачу от минимальном покрывающем
дереве, но, в отличие от последней, NP-трудна.
А. Куликов (Computer Science клуб) 11. FPT-алгоритмы 11 / 24
29. Динамическое программирование Steiner tree problem
Steiner tree problem
Steiner tree problem заключается в нахождении по данному графу
G и множеству S из k его вершин дерева T минимального веса,
содержащего все вершины множества S. Вершины множества S
называются терминалами (termianl).
Задача очень похожа на задачу от минимальном покрывающем
дереве, но, в отличие от последней, NP-трудна.
Мы покажем, что при параметризации k = |S| она принадлежит
классу FPT.
А. Куликов (Computer Science клуб) 11. FPT-алгоритмы 11 / 24
30. Динамическое программирование Steiner tree problem
Решение методом динамического программирования
Лемма
Для v ∈ V и X ⊆ S пусть c(v , X ) — минимальная стоимость дерева
для X , содержащего v , d (u, v ) — расстояние от u до v . Тогда
c(v , X ) = min c(u, X ′ ∖ u) + c(u, X ∖ X ′ ∖ u) + d (u, v ).
u∈V ,∅⊂X ′ ⊂X
А. Куликов (Computer Science клуб) 11. FPT-алгоритмы 12 / 24
31. Динамическое программирование Steiner tree problem
Доказательство леммы
c(v , X ) = min c(u, X ′ ∖ u) + c(u, X ∖ X ′ ∖ u) + d (u, v ).
u∈V ,∅⊂X ′ ⊂X
u
v
≤: Дерево T1 , на котором достигается c(u, X ′ ∖ u), дерево T2 , на
котором достигается c(u, X ∖ X ′ ∖ u), и путь из u в v дают в
объединении дерево, содержащее все вершины множества X и v .
А. Куликов (Computer Science клуб) 11. FPT-алгоритмы 13 / 24
32. Динамическое программирование Steiner tree problem
Доказательство леммы
u
v
≤: Пусть на дереве T достигается c(v , X ) и пусть T ′ — его
минимальное дерево, покрывающее X . Пусть u — вершина T ′ ,
ближайшая к v . Найдется компонента в T ∖ u, содержащая
подмножество терминалов ∅ ⊂ X ′ ⊂ X . Значит, T есть объединение
дерева, содержащего X ′ ∖ u и u, дерева, содержащего X ∖ X ′ ∖ u и u, и
пути из u в v .
А. Куликов (Computer Science клуб) 11. FPT-алгоритмы 14 / 24
33. Динамическое программирование Steiner tree problem
Алгоритм
А. Куликов (Computer Science клуб) 11. FPT-алгоритмы 15 / 24
34. Динамическое программирование Steiner tree problem
Алгоритм
Итак, достаточно заполнить матрицу размера 2k |V | в порядке
возрастания размера |X |.
А. Куликов (Computer Science клуб) 11. FPT-алгоритмы 15 / 24
35. Динамическое программирование Steiner tree problem
Алгоритм
Итак, достаточно заполнить матрицу размера 2k |V | в порядке
возрастания размера |X |.
Для вычисления значения c(v , X ) необходимо перебрать 2|X |
значений.
А. Куликов (Computer Science клуб) 11. FPT-алгоритмы 15 / 24
36. Динамическое программирование Steiner tree problem
Алгоритм
Итак, достаточно заполнить матрицу размера 2k |V | в порядке
возрастания размера |X |.
Для вычисления значения c(v , X ) необходимо перебрать 2|X |
значений.
Время работы:
∑︁ k
∑︁ (︂k )︂
|X |
2 = 2i ≤ (1 + 2)k = 3k
i
X ⊆S i=1
А. Куликов (Computer Science клуб) 11. FPT-алгоритмы 15 / 24
37. Итеративное сжатие
План лекции
1 Лемма о подсолнухе
Задача о минимальном множестве представителей
2 Динамическое программирование
Steiner tree problem
3 Итеративное сжатие
Задача об удалении нечетных циклов
А. Куликов (Computer Science клуб) 11. FPT-алгоритмы 16 / 24
38. Итеративное сжатие Задача об удалении нечетных циклов
План лекции
1 Лемма о подсолнухе
Задача о минимальном множестве представителей
2 Динамическое программирование
Steiner tree problem
3 Итеративное сжатие
Задача об удалении нечетных циклов
А. Куликов (Computer Science клуб) 11. FPT-алгоритмы 17 / 24
39. Итеративное сжатие Задача об удалении нечетных циклов
Задача об удалении нечетных циклов
А. Куликов (Computer Science клуб) 11. FPT-алгоритмы 18 / 24
40. Итеративное сжатие Задача об удалении нечетных циклов
Задача об удалении нечетных циклов
Задача об удалении нечетных циклов (odd cycle transversal
problem, bipartite deletion problem, graph bipartization problem)
заключается в проверке по данному графу G и числу k
существования в графе таких k вершин, после удаления которых
граф становится двудольным. Такое множество вершин S
называется секущим (odd cycle transversal).
А. Куликов (Computer Science клуб) 11. FPT-алгоритмы 18 / 24
41. Итеративное сжатие Задача об удалении нечетных циклов
Задача об удалении нечетных циклов
Задача об удалении нечетных циклов (odd cycle transversal
problem, bipartite deletion problem, graph bipartization problem)
заключается в проверке по данному графу G и числу k
существования в графе таких k вершин, после удаления которых
граф становится двудольным. Такое множество вершин S
называется секущим (odd cycle transversal).
Compression version задачи об удалении нечетных циклов: дан
граф G и его секущее множество S размера k + 1 и необходимо
проверить, есть ли у G секущее множество размера k.
А. Куликов (Computer Science клуб) 11. FPT-алгоритмы 18 / 24
42. Итеративное сжатие Задача об удалении нечетных циклов
Итеративное сжатие
А. Куликов (Computer Science клуб) 11. FPT-алгоритмы 19 / 24
43. Итеративное сжатие Задача об удалении нечетных циклов
Итеративное сжатие
Построив алгоритм Compression для compression version задачи
об удалении нечетных циклов со временем работы f (k)nc , мы
сможем решить исходную задачу за f (k)nc+1 .
А. Куликов (Computer Science клуб) 11. FPT-алгоритмы 19 / 24
44. Итеративное сжатие Задача об удалении нечетных циклов
Итеративное сжатие
Построив алгоритм Compression для compression version задачи
об удалении нечетных циклов со временем работы f (k)nc , мы
сможем решить исходную задачу за f (k)nc+1 .
Пусть V = {v1 , . . . , vn } и Gi = G [Vi ].
А. Куликов (Computer Science клуб) 11. FPT-алгоритмы 19 / 24
45. Итеративное сжатие Задача об удалении нечетных циклов
Итеративное сжатие
Построив алгоритм Compression для compression version задачи
об удалении нечетных циклов со временем работы f (k)nc , мы
сможем решить исходную задачу за f (k)nc+1 .
Пусть V = {v1 , . . . , vn } и Gi = G [Vi ].
Простые замечания:
А. Куликов (Computer Science клуб) 11. FPT-алгоритмы 19 / 24
46. Итеративное сжатие Задача об удалении нечетных циклов
Итеративное сжатие
Построив алгоритм Compression для compression version задачи
об удалении нечетных циклов со временем работы f (k)nc , мы
сможем решить исходную задачу за f (k)nc+1 .
Пусть V = {v1 , . . . , vn } и Gi = G [Vi ].
Простые замечания:
если S является секущим для G , то оно является секущим для
всех Gi ;
А. Куликов (Computer Science клуб) 11. FPT-алгоритмы 19 / 24
47. Итеративное сжатие Задача об удалении нечетных циклов
Итеративное сжатие
Построив алгоритм Compression для compression version задачи
об удалении нечетных циклов со временем работы f (k)nc , мы
сможем решить исходную задачу за f (k)nc+1 .
Пусть V = {v1 , . . . , vn } и Gi = G [Vi ].
Простые замечания:
если S является секущим для G , то оно является секущим для
всех Gi ;
если S является секущим для Gi , то S ∪ {vi+1 } является секущим
для Gi+1 ;
А. Куликов (Computer Science клуб) 11. FPT-алгоритмы 19 / 24
48. Итеративное сжатие Задача об удалении нечетных циклов
Итеративное сжатие
Построив алгоритм Compression для compression version задачи
об удалении нечетных циклов со временем работы f (k)nc , мы
сможем решить исходную задачу за f (k)nc+1 .
Пусть V = {v1 , . . . , vn } и Gi = G [Vi ].
Простые замечания:
если S является секущим для G , то оно является секущим для
всех Gi ;
если S является секущим для Gi , то S ∪ {vi+1 } является секущим
для Gi+1 ;
Vk — секущее для Gk .
А. Куликов (Computer Science клуб) 11. FPT-алгоритмы 19 / 24
49. Итеративное сжатие Задача об удалении нечетных циклов
Итеративное сжатие
А. Куликов (Computer Science клуб) 11. FPT-алгоритмы 20 / 24
50. Итеративное сжатие Задача об удалении нечетных циклов
Итеративное сжатие
Запустим Compression(Gk+1 , Vk+1 , k).
А. Куликов (Computer Science клуб) 11. FPT-алгоритмы 20 / 24
51. Итеративное сжатие Задача об удалении нечетных циклов
Итеративное сжатие
Запустим Compression(Gk+1 , Vk+1 , k).
Если ответом будет “нет”, то секущего множества размера k нет и
для исходного графа.
А. Куликов (Computer Science клуб) 11. FPT-алгоритмы 20 / 24
52. Итеративное сжатие Задача об удалении нечетных циклов
Итеративное сжатие
Запустим Compression(Gk+1 , Vk+1 , k).
Если ответом будет “нет”, то секущего множества размера k нет и
для исходного графа.
Если же ответом будет секущее множество Sk+1 размера k, то
запустим Compression(Gk+2 , Sk+1 ∪ {vk+2 }, k).
А. Куликов (Computer Science клуб) 11. FPT-алгоритмы 20 / 24
53. Итеративное сжатие Задача об удалении нечетных циклов
Итеративное сжатие
Запустим Compression(Gk+1 , Vk+1 , k).
Если ответом будет “нет”, то секущего множества размера k нет и
для исходного графа.
Если же ответом будет секущее множество Sk+1 размера k, то
запустим Compression(Gk+2 , Sk+1 ∪ {vk+2 }, k).
И так далее до Gn .
А. Куликов (Computer Science клуб) 11. FPT-алгоритмы 20 / 24
54. Итеративное сжатие Задача об удалении нечетных циклов
Итеративное сжатие
Запустим Compression(Gk+1 , Vk+1 , k).
Если ответом будет “нет”, то секущего множества размера k нет и
для исходного графа.
Если же ответом будет секущее множество Sk+1 размера k, то
запустим Compression(Gk+2 , Sk+1 ∪ {vk+2 }, k).
И так далее до Gn .
Мы предъявим алгоритм, решающий compression version за время
O(3k k|E |).
А. Куликов (Computer Science клуб) 11. FPT-алгоритмы 20 / 24
55. Итеративное сжатие Задача об удалении нечетных циклов
Решение compression version
А. Куликов (Computer Science клуб) 11. FPT-алгоритмы 21 / 24
56. Итеративное сжатие Задача об удалении нечетных циклов
Решение compression version
Итак, пусть дан граф G и его секущее множество S ′ размера k + 1
и необходимо проверить, есть ли секущее множество S размера k.
А. Куликов (Computer Science клуб) 11. FPT-алгоритмы 21 / 24
57. Итеративное сжатие Задача об удалении нечетных циклов
Решение compression version
Итак, пусть дан граф G и его секущее множество S ′ размера k + 1
и необходимо проверить, есть ли секущее множество S размера k.
Расщепимся на 3k+1 случай: каждая вершина множества S ′
должна принадлежать либо S, либо одной из двух долей.
А. Куликов (Computer Science клуб) 11. FPT-алгоритмы 21 / 24
58. Итеративное сжатие Задача об удалении нечетных циклов
Решение compression version
Итак, пусть дан граф G и его секущее множество S ′ размера k + 1
и необходимо проверить, есть ли секущее множество S размера k.
Расщепимся на 3k+1 случай: каждая вершина множества S ′
должна принадлежать либо S, либо одной из двух долей.
В каждом из случаев у нас некоторые вершины графа уже
принадлежат искомому секущему множеству S, некоторые уже
покрашены в белый цвет, некоторые — в черный. Ясно, что в
искомой раскраске графа G ∖ S все соседи уже покрашенных
черных вершин должны быть белыми, а все соседи уже
покрашенных белых — черными.
А. Куликов (Computer Science клуб) 11. FPT-алгоритмы 21 / 24
59. Итеративное сжатие Задача об удалении нечетных циклов
Решение compression version
Итак, пусть дан граф G и его секущее множество S ′ размера k + 1
и необходимо проверить, есть ли секущее множество S размера k.
Расщепимся на 3k+1 случай: каждая вершина множества S ′
должна принадлежать либо S, либо одной из двух долей.
В каждом из случаев у нас некоторые вершины графа уже
принадлежат искомому секущему множеству S, некоторые уже
покрашены в белый цвет, некоторые — в черный. Ясно, что в
искомой раскраске графа G ∖ S все соседи уже покрашенных
черных вершин должны быть белыми, а все соседи уже
покрашенных белых — черными.
Достаточно показать, что следующая задача ∈ FPT. Дан
двудольный граф G и непересекающиеся подмножества его
вершин B и W . Необходимо проверить, существует ли такое
подмножество его вершин S размера не более k, такое что G ∖ S
можно покрасить в два цвета, причем вершины множеств B и W
будут покрашены, соответственно, в черный и белый цвета.
А. Куликов (Computer Science клуб) 11. FPT-алгоритмы 21 / 24
60. Итеративное сжатие Задача об удалении нечетных циклов
Вспомогательная задача
А. Куликов (Computer Science клуб) 11. FPT-алгоритмы 22 / 24
61. Итеративное сжатие Задача об удалении нечетных циклов
Вспомогательная задача
Дан двудольный граф G и непересекающиеся подмножества его
вершин B и W . Необходимо проверить, существует ли такое
подмножество его вершин S размера не более k, такое что G ∖ S
можно покрасить в два цвета, причем вершины множеств B и W
будут покрашены, соответственно, в черный и белый цвета.
А. Куликов (Computer Science клуб) 11. FPT-алгоритмы 22 / 24
62. Итеративное сжатие Задача об удалении нечетных циклов
Вспомогательная задача
Дан двудольный граф G и непересекающиеся подмножества его
вершин B и W . Необходимо проверить, существует ли такое
подмножество его вершин S размера не более k, такое что G ∖ S
можно покрасить в два цвета, причем вершины множеств B и W
будут покрашены, соответственно, в черный и белый цвета.
Найдем какую-нибудь раскраску (B0 , W0 ) графа G в два цвета.
А. Куликов (Computer Science клуб) 11. FPT-алгоритмы 22 / 24
63. Итеративное сжатие Задача об удалении нечетных циклов
Вспомогательная задача
Дан двудольный граф G и непересекающиеся подмножества его
вершин B и W . Необходимо проверить, существует ли такое
подмножество его вершин S размера не более k, такое что G ∖ S
можно покрасить в два цвета, причем вершины множеств B и W
будут покрашены, соответственно, в черный и белый цвета.
Найдем какую-нибудь раскраску (B0 , W0 ) графа G в два цвета.
Вершины множества C = (B0 ∩ W ) ∪ (W0 ∩ B) должны изменить
цвет, а вершины множества R = (B0 ∩ B) ∪ (W0 ∩ W ) — сохранить.
А. Куликов (Computer Science клуб) 11. FPT-алгоритмы 22 / 24
64. Итеративное сжатие Задача об удалении нечетных циклов
Вспомогательная задача
Дан двудольный граф G и непересекающиеся подмножества его
вершин B и W . Необходимо проверить, существует ли такое
подмножество его вершин S размера не более k, такое что G ∖ S
можно покрасить в два цвета, причем вершины множеств B и W
будут покрашены, соответственно, в черный и белый цвета.
Найдем какую-нибудь раскраску (B0 , W0 ) графа G в два цвета.
Вершины множества C = (B0 ∩ W ) ∪ (W0 ∩ B) должны изменить
цвет, а вершины множества R = (B0 ∩ B) ∪ (W0 ∩ W ) — сохранить.
Лемма
G ∖ S имеет необходимую раскраску тогда и только тогда, когда S
разделяет множества C и R (то есть ни одна компонента G ∖ S не
содержит одновременно вершины и из S, и из R).
А. Куликов (Computer Science клуб) 11. FPT-алгоритмы 22 / 24
65. Итеративное сжатие Задача об удалении нечетных циклов
Доказательство леммы
Лемма
G ∖ S имеет необходимую раскраску тогда и только тогда, когда S
разделяет множества C и R (то есть ни одна компонента G ∖ S не
содержит одновременно вершины и из S, и из R).
А. Куликов (Computer Science клуб) 11. FPT-алгоритмы 23 / 24
66. Итеративное сжатие Задача об удалении нечетных циклов
Доказательство леммы
Лемма
G ∖ S имеет необходимую раскраску тогда и только тогда, когда S
разделяет множества C и R (то есть ни одна компонента G ∖ S не
содержит одновременно вершины и из S, и из R).
Доказательство
А. Куликов (Computer Science клуб) 11. FPT-алгоритмы 23 / 24
67. Итеративное сжатие Задача об удалении нечетных циклов
Доказательство леммы
Лемма
G ∖ S имеет необходимую раскраску тогда и только тогда, когда S
разделяет множества C и R (то есть ни одна компонента G ∖ S не
содержит одновременно вершины и из S, и из R).
Доказательство
⇒: в 2-раскраске G каждая вершина либо меняет, либо сохраняет
цвет, причем со смежными вершинами происходит одно и то же.
А. Куликов (Computer Science клуб) 11. FPT-алгоритмы 23 / 24
68. Итеративное сжатие Задача об удалении нечетных циклов
Доказательство леммы
Лемма
G ∖ S имеет необходимую раскраску тогда и только тогда, когда S
разделяет множества C и R (то есть ни одна компонента G ∖ S не
содержит одновременно вершины и из S, и из R).
Доказательство
⇒: в 2-раскраске G каждая вершина либо меняет, либо сохраняет
цвет, причем со смежными вершинами происходит одно и то же.
⇐: Изменим цвет компонент графа G ∖ S, содержащих вершины
множества C .
А. Куликов (Computer Science клуб) 11. FPT-алгоритмы 23 / 24
69. Итеративное сжатие Задача об удалении нечетных циклов
Доказательство леммы
Лемма
G ∖ S имеет необходимую раскраску тогда и только тогда, когда S
разделяет множества C и R (то есть ни одна компонента G ∖ S не
содержит одновременно вершины и из S, и из R).
Доказательство
⇒: в 2-раскраске G каждая вершина либо меняет, либо сохраняет
цвет, причем со смежными вершинами происходит одно и то же.
⇐: Изменим цвет компонент графа G ∖ S, содержащих вершины
множества C .
Алгоритм для нахождения множества S
Множество S может быть найдено за k итераций алгоритма
Форда-Фалкерсона.
А. Куликов (Computer Science клуб) 11. FPT-алгоритмы 23 / 24
70. Итеративное сжатие Задача об удалении нечетных циклов
Спасибо за внимание!
А. Куликов (Computer Science клуб) 11. FPT-алгоритмы 24 / 24