Список заданий по АСД — различия между версиями

Материал из Викиконспекты
Перейти к: навигация, поиск
Строка 84: Строка 84:
 
# Укажите способ модифицировать алгоритм Флойда, чтобы он находит отрицательные циклы в графе
 
# Укажите способ модифицировать алгоритм Флойда, чтобы он находит отрицательные циклы в графе
 
# Укажите способ восстанавливать пути между парами вершин в алгоритме Флойда
 
# Укажите способ восстанавливать пути между парами вершин в алгоритме Флойда
 +
# Доказать, что дерево $T$ является MST (здесь и далее MST - минимальное остовное дерево) тогда и только тогда, когда для любого ребра $uv \not\in T$ это ребро максимальное по весу на единственном цикле в графе $T \cup uv$. (Критерий Тарьяна)
 +
# Используя критерий Тарьяна предложить алгоритм проверки того, что $T$ - MST, работающий за $O(E\times DSU)$
 +
# [http://ru.wikipedia.org/wiki/%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D0%91%D0%BE%D1%80%D1%83%D0%B2%D0%BA%D0%B8]. Доказать корректность работы алгоритма Борувки.
 +
# Предложить реализацию алгоритма Борувки, работающую за $O(E \log V)$.
 +
# Предложите реализацию алгоритма Борувки, работающую за $O(E \log^*V)$. (Указание - см. Freedman, Tarjan статью про фибоначчиевы кучи)
 +
# Рассмотрим граф, вершины которого - остовные деревья $G$, а ребро между деревьями $T_1$ и $T_2$ существует, если $T_1$ получается из $T_2$ добавлением одного ребра и удалением другого. В нём рассмотрим подграф, состоящий только из $MST$. Доказать, что он связен.
 +
# Рассмотрим граф. Упорядочим все его остовные деревья по возрастанию веса. Требуется найти вес второго в этом упорядочении дерева.
 +
# Разработать алгоритм поиска всех рёбер, принадлежащих какому-нибудь MST за $O(VE)$.
 +
# Доказать, что число остовных деревьев в полном графе равно $n ^{n - 2}$.
 +
# Петя пытается применить алгоритм Прима для ориентированного графа. Приведите пример графа, на котором Петя не сможет найти MST.
 +
# Коля пытается применить алгоритм Краскала для ориентированного графа. Приведите пример графа, на котором Коля не сможет найти MST.
 +
# Предложите реализацию алгоримта двух китайцев за $O(E \log E)$.
 +
# Предложите алгоритм поиска остовного дерева с минимальным весом максимального ребра за время равное работе алгоритма поиска MST.
 +
# Пусть $w(uv)$ - вес ребра, $c(uv)$ - стоимость ребра. Разработать алгоритм построения остовного дерева минимальной средней стоимости. (Отношение суммы стоимостей рёбер дерева к сумме весов рёбер дерева должно быть минимальным)
 
</wikitex>
 
</wikitex>

Версия 14:55, 24 октября 2013

<wikitex>

Дискретная математика, алгоритмы и структуры данных, 3 семестр

Некоторые задания можно найти в книге Харари, Теория графов

  1. Доказать, что если из $u$ достижима $v$, то существует простой путь из $u$ в $v$.
  2. Доказать, что если в ориентированном графе существует цикл, то в нем существует и простой цикл.
  3. Доказать, что если в неориентированным графе существует цикл, то в нем существует и простой цикл.
  4. Петя придумал отношение средней связности: $u$ средне связана с $v$, если из $u$ достижима $v$ или из $v$ достижима $u$. Является ли это отношение отношением эквивалентности?
  5. Пусть граф $G$ - объединение двух различных простых путей из $u$ в $v$. Докажите, что в $G$ есть цикл.
  6. Харари 2.3
  7. Харари 2.5
  8. Харари 2.9
  9. Харари 2.13
  10. Харари 2.15
  11. Будем говорить, что $G$ связан короткими путями, если между любыми двумя вершинами в $G$ есть путь длины не более 3. Докажите, что либо $G$, либо $\overline G$ связан короткими путями.
  12. Харари 2.16
  13. Харари 2.20
  14. Доказать теорему об эквивалентности утверждений для точек сочленения.
  15. Доказать или опровергнуть, что если ребро $uv$ - мост, то $u$ и $v$ - точки сочленения.
  16. Доказать или опровергнуть, что если $u$ и $v$ - точки сочленения, то $uv$ - мост.
  17. Какое максимальное число точек сочленения может быть в графе с $n$ вершинами?
  18. При каких соотношениях $a$, $b$, $n$, $m$, $k$ существует граф с $a$ точками сочленения, $b$ мостами, $n$ вершинами, $m$ рёбрами, $k$ компонентами связности?
  19. Рассмотрим отношение на рёбрах - $R$. $ab R cd$, если 1) $ab$ и $cd$ имеют общую вершину; 2) $ab$ и $cd$ лежат на цикле. Доказать, что вершинная двусвязность - это рефлексивно-транзитивное замыкание $R$.
  20. Доказать, что ребро $uv$ - мост тогда и только тогда, когда $uv$ вершинно двусвязно только с самим собой.
  21. Харари 3.2
  22. Харари 3.3
  23. Харари 3.4
  24. Харари 3.5
  25. Харари 3.6
  26. Рассмотрим неориентированный граф $G$. Запустим dfs, затем ориентируем рёбра дерева dfs $T$ от корня, а остальные - к корню. Доказать, что компоненты сильной связности в получившемся графе равны компонентам рёберной двусвязности в исходном графе
  27. Разработать алгоритм поиска компонент рёберной двусвязности, используя ровно один запуск dfs.
  28. Разработать алгоритм поиска компонент вершинной двусвязности, используя ровно один запуск dfs.
  29. Пусть $T$ - дерево dfs. Укажите способ за $O(E)$ посчитать число пар $(e_1, e_2)$, таких что 1) $e1 \in T$; 2) $e2\not\in T$; 3) граф $G$ после удаления рёбер $e_1$ и $e_2$ - не связен.
  30. Пусть $T$ - дерево dfs. Укажите способ за $O(E)$ посчитать число пар $(e_1, e_2)$, таких что 1) $e1 \in T$; 2) $e2 \in T$; 3) граф $G$ после удаления рёбер $e_1$ и $e_2$ - не связен.
  31. Петя неправильно написал алгоритм подсчёта up, делая up[u] = min(up[u], up[v]) даже если ребро uv - обратное. Будет ли у него работать поиск мостов?
  32. Петя неправильно написал алгоритм подсчёта up, делая up[u] = min(up[u], up[v]) даже если ребро uv - обратное. Будет ли у него работать поиск точек сочленения?
  33. В первом издании Кормена была ошибка. Там было сказано, что вершина v есть точка сочленения тогда и только тогда, когда (v - корень И у v ≥ 2 сына) ИЛИ (v - не корень И up[v] ≥ enter[v]). Приведите контрпример.
  34. Граф называется вершинно трёхсвязным, если он остаётся связным после удаления любых двух вершин. Доказать или опровергнуть, что в вершинно трёхсвязном графе любые три вершины лежат на простом цикле.
  35. Граф называется вершинно k-связным, если он остаётся связным после удаления любых (k - 1) вершин. Доказать или опровергнуть, что в вершинно k-связном графе любые k вершин лежат на простом цикле.
  36. Пусть $G$ - связный граф. Обозначим как $\kappa(G)$ - минимальное число вершин, которое необходимо удалить, чтобы граф потерял связность. (для полного графа это число равно n - 1), $\lambda(G)$ - минимальное число рёбер, которое необходимо удалить, чтобы граф потерял связность, $\delta(G)$ - минимальную степень в вершины в графе $G$. Докажите, что $\kappa(G) \le \lambda(G) \le \delta(G)$.
  37. Докажите, что для любых $a$, $b$, $c$, таких что $1 \le a \le b \le c$, существует граф $G$, такой что $\kappa(G) = a$, $\lambda(G) = b$, $\delta(G) = c$.
  38. Харари 4.2
  39. Харари 5.5
  40. Харари 5.6
  41. В условиях теоремы Дирака предложить алгоритм нахождения в графе гамильтонова цикла.
  42. Теорема Оре: если для любых вершин $u$ и $v$, не соединенных ребром, сумма степеней $deg(u) + deg(v) \ge n$, то в графе существует Гамильтонов цикл. В условиях теоремы Оре предложить алгоритм нахождения в графе гамильтонова цикла.
  43. В условиях теоремы Хватала предложить алгоритм нахождения в графе гамильтонова цикла.
  44. Харари 7.2
  45. Харари 7.4
  46. Харари 7.5
  47. Харари 7.7
  48. Харари 7.9
  49. Харари 7.14
  50. Харари 7.17
  51. Харари 7.18
  52. Харари 11.1
  53. Харари 11.2
  54. Харари 11.3
  55. Харари 11.7
  56. Харари 11.8
  57. Харари 11.9
  58. Харари 11.10
  59. Харари 11.14
  60. Харари 11.15
  61. Харари 11.25
  62. Доказать, что если $P_G(t) = t (t - 1)^{n - 1}$, то $G$ - дерево.
  63. Посчитать хроматический многочлен цикла $C_n$
  64. Посчитать хроматический многочлен колеса $C_n + K_1$.
  65. Харари 12.2
  66. Харари 12.3
  67. Доказать формулу Зыкова для хроматического многочлена графа $G$: $P_G(x)=\sum\limits_{i=1}^n pt(G,i)x^{\underline{i}}$, где $pt(G,i)$ — число способов разбить вершины $G$ на $i$ независимых множеств.
  68. Доказать формулу Уитни: пусть $G$ - обыкновенный $(n, m)$ - граф. Тогда коэффициент при $x^i$, где $1\le i\le n$ в хроматическом многочлене $P_G(x)$ равен $\sum \limits_{j=0}^{m}{(-1)^jN(i, j)}$, где $N(i, j)$ - число остовных подграфов графа $G$, имеющих $i$ компонент связности и $j$ рёбер.
  69. Модифицируйте алгоритм поиска в ширину так, чтобы он находил кратчайшие пути в графе с весами рёбер 0 или 1 за $O(E)$.
  70. Модифицируйте алгоритм поиска в ширину так, чтобы он находил кратчайшие пути в графе с весами рёбер $0, 1, ..., k$ за $O(kV + E)$.
  71. Доказать теорему об отсутствии кратчайшего пути на базе алгоритма Форда-Беллмана. (от $s$ до $v$ нет кратчайшего пути тогда и только тогда, когда она достижима из $u$, такой что после выполнения алгоритма Форда-Беллмана найдется ребро $xu$, для которого $d[x] + w(xu) < d[u]$)
  72. Разработать алгоритм на базе Форда-Беллмана, который ищет в графе отрицательный цикл.
  73. Укажите способ построить для некоторых $c_1, c_2 >0$ и любых V, E, где $c_1 V \le E \le c_2 V^2$ граф, на котором алгоритм Форда-Беллмана, реализовнный на очереди, работает за $\Omega(VE)$.
  74. Приведите пример графа с отрицательными рёбрами, на котором алгоритм Дейкстры работает неверно.
  75. Пусть веса рёбер не обязательно неотрицательны, но отрицательных циклов нет. Добавим в алгоритм Дейкстры следующее: если производится успешная релаксация по ребру $vx$ и $x \in U$, то вешина $x$ удаляется из $U$. Докажите, что, если этот алгоритм находит кратчайшие пути в графе.
  76. Приведите пример графа, в котором алгоритм из предыдущего задания рабоатает экспоненциальное время.
  77. Предложите граф, в котором алгоритм Дейкстры делает $\Omega(E)$ успешных релаксаций
  78. Модифицируйте алгоритм Форда-Беллмана так, чтобы он находил в графе циклы минимального среднего веса.
  79. Укажите способ модифицировать алгоритм Флойда, чтобы он находит отрицательные циклы в графе
  80. Укажите способ восстанавливать пути между парами вершин в алгоритме Флойда
  81. Доказать, что дерево $T$ является MST (здесь и далее MST - минимальное остовное дерево) тогда и только тогда, когда для любого ребра $uv \not\in T$ это ребро максимальное по весу на единственном цикле в графе $T \cup uv$. (Критерий Тарьяна)
  82. Используя критерий Тарьяна предложить алгоритм проверки того, что $T$ - MST, работающий за $O(E\times DSU)$
  83. [1]. Доказать корректность работы алгоритма Борувки.
  84. Предложить реализацию алгоритма Борувки, работающую за $O(E \log V)$.
  85. Предложите реализацию алгоритма Борувки, работающую за $O(E \log^*V)$. (Указание - см. Freedman, Tarjan статью про фибоначчиевы кучи)
  86. Рассмотрим граф, вершины которого - остовные деревья $G$, а ребро между деревьями $T_1$ и $T_2$ существует, если $T_1$ получается из $T_2$ добавлением одного ребра и удалением другого. В нём рассмотрим подграф, состоящий только из $MST$. Доказать, что он связен.
  87. Рассмотрим граф. Упорядочим все его остовные деревья по возрастанию веса. Требуется найти вес второго в этом упорядочении дерева.
  88. Разработать алгоритм поиска всех рёбер, принадлежащих какому-нибудь MST за $O(VE)$.
  89. Доказать, что число остовных деревьев в полном графе равно $n ^{n - 2}$.
  90. Петя пытается применить алгоритм Прима для ориентированного графа. Приведите пример графа, на котором Петя не сможет найти MST.
  91. Коля пытается применить алгоритм Краскала для ориентированного графа. Приведите пример графа, на котором Коля не сможет найти MST.
  92. Предложите реализацию алгоримта двух китайцев за $O(E \log E)$.
  93. Предложите алгоритм поиска остовного дерева с минимальным весом максимального ребра за время равное работе алгоритма поиска MST.
  94. Пусть $w(uv)$ - вес ребра, $c(uv)$ - стоимость ребра. Разработать алгоритм построения остовного дерева минимальной средней стоимости. (Отношение суммы стоимостей рёбер дерева к сумме весов рёбер дерева должно быть минимальным)

</wikitex>