300000
Павутина©
Total number of wins: 129258
(6 – 20): | Цикл Шлях Випадкових Виклик |
Визначення + Як це все-таки «математична» гра?
Діаграми в цій грі засновані на галузі математики, відомій як теорія графів!
Що таке графік?
Graph: Граф складається з вузлів і ребер.
Node: «Об'єкти», які з'єднує граф, називаються вузлами. У Spider Web вузлами є кола.
Edge: Ребро — це зв'язок у графі між двома вузлами. У «Павутині» краї є лініями.
Розширення контуру
Path: Контур — це послідовність з'єднаних ребер із початковим і кінцевим вузлами.
Ейлерівський шлях: Це шлях, який використовує кожне ребро на графіку рівно один раз.
Мета в цій грі - знайти ейлерівський шлях.
Що таке ейлерівські шляхи в повсякденному житті?
Снігоприбиральна машина, вантажівка для прибирання вулиць і листоноша є прикладами для автомобілів і людей, яким потрібно проїхати через кожну вулицю, але вони не хочуть проїжджати вулицю двічі.
Назва «Ейлер» звучить знайомо?
Теорія графів з'явилася, коли математик Леонард Ейлер працював над подібними шляхами.
Ейлер написав статтю про сім мостів Кенігсберга, в якій довів, що неможливо пройти через міський перехід через кожен міст рівно один раз.
Натисніть на карту проблеми нижче, щоб дізнатися більше про неї.
Cycle: Цикл — це шлях, який закінчується на вузлі, на якому він почався.
Ейлерівський цикл: Це ейлерівський шлях, який також є циклом. Виберіть "Цикл" у нашій грі вище, і рішенням завжди буде ейлерівський цикл!
Інструкції з налаштувань гри
У текстовому полі поруч із пунктом Вузли можна ввести будь-яке число від 6 до 20. Це число і буде кількістю вузлів, що відображаються на графіку. Чим більше число, тим складнішим стає рішення!
Далі виберіть Тип діаграми
Cycle: Виграшні шляхи завжди закінчуватимуться на вузлі, на якому вони почали.
Шлях: виграшні шляхи не закінчаться на вузлі, на якому вони почали.
Random: Графіки, які можуть дозволити ейлеріанський цикл або ейлерівський шлях. Виграшні шляхи можуть закінчуватися, а можуть і не закінчуватися на тому вузлі, на якому вони почали.
Завдання: Створені вручну графіки, де ребра перетинаються, а отже, мости не є очевидними для виявлення.
Нарешті, натисніть «Створити новий веб», щоб побачити зміни в налаштуваннях графіка!
Який вузол вибрати в першу чергу?
Degree: Ступінь є властивістю вузла. Це кількість ребер, з'єднаних з нею. Будемо розрізняти вузли непарного ступеня і вузли парного ступеня, в залежності від їх ступеня.
Зв'язаний граф: Граф, де кожна пара вузлів може бути з'єднана за допомогою контуру.
Міст: Ребро є мостом, якщо два кінці ребра не можуть бути з'єднані інакше. Таким чином, перейшовши міст, людина не повернеться на попередню сторону. Видалення моста розділяє граф на дві роз'єднані складові.
Неорієнтований граф : Графік, у якому ребра не мають напрямку. У цій грі ми розглядаємо тільки ті.
Орієнтований графік : Графік, де кожне ребро має напрямок, прикріплений як вулиця з одностороннім рухом.
Неорієнтований граф містить ейлерівський цикл, коли всі вузли мають парний степінь (степінь 0, 2, 4, 6...) . Для них ви можете вибрати будь-який вузол як стартовий вузол і все одно виграти. Тільки майте на увазі, що вам доведеться закінчити на тому вузлі, з якого ви почали.
Граф містить ейлерівський шлях, але не ейлерівський цикл, коли рівно два вузли мають непарний степінь (степінь 1, 3, 5, 7...) і всі інші вузли мають рівну ступінь. У цьому випадку ви повинні вибрати вузол з непарним ступенем як початковий вузол інакше ви не зможете завершити ейлерівський шлях.
Чому саме два вузли?
Думайте про кожен хід як про «вихід» з вузла, з якого ви прийшли, і «в» у вузол, до якого ви подорожуєте. Більшість вузлів будуть слідувати цій схемі сполучення, тому вони матимуть парний градус.
Коли ви починаєте гру, перше ребро, яке ви позначаєте, є переміщенням «поза початковим вузлом». Це залишається непарним під час гри.
Щоб зробити ейлерівський цикл, фінальне ребро, яке ви позначаєте, є переміщенням "в" до початкового вузла. Це створює пару з першим ходом, тобто початковий вузол має парний градус.
Якщо ейлерова траєкторія графа не є циклом, то фінальне ребро, яке ви позначаєте, є непарним рухом "в" до вузла, який не є початковим вузлом. початковий вузол залишається з непарним ступенем, а кінцевий вузол також матиме непарний ступінь.
Не турбуйтеся про будь-які інші випадки. Якби число вузлів з непарним ступенем не було рівно 0 або 2, то не було б ні ейлерових шляхів, ні ейлерових циклів, що означає відсутність шляху до перемоги. Такі графіки не повинні з'являтися в цій грі.
Попередні запитання
Чи може існувати непарна кількість вузлів з непарним ступенем?
Ні.
Чому?
Доказ:
Підрахунок всіх кінців всіх ребер дає те ж число, що і підсумовування всіх ступенів всіх вузлів, згоден?
Оскільки кожне ребро має 2 кінці, загальна кількість кінців усіх ребер має бути парною. (Додавання парних чисел дає парне число.)
Щоб скласти ступені всіх вузлів, потрібно скласти парні градуси, що дає парне число, і скласти непарні градуси.
Якби існувало непарне число вузлів непарного ступеня, то ця сума була б непарною, а потім парним + непарним = непарним, тому загальна кількість ступенів була б непарною. Але вона дорівнює загальній кількості всіх кінців всіх ребер і є парною. Тому кількість вузлів непарного ступеня не може бути непарним, воно повинно бути парним.
Наприклад, 1 є непарним числом, тому не існує графіка лише з 1 вузлом непарного степеня.
Коли існує ейлерівський шлях або цикл?
Якщо вузол має парний ступінь, тобто 2, 4, 6,... Ребра приєднуються до вузла, потім, коли ви прибуваєте до цього вузла, залишається непарне число невикористаних ребер, яке більше нуля, так що можна буде покинути цей вузол і піти далі. Якщо ступінь непарна, тобто 1, 3, 5,.. Ребра прикріплюються, то потрібно або почати шлях з цього вузла, або шлях закінчиться на цьому вузлі. Оскільки контур має лише 2 кінці, може бути лише 2 вузли з непарним степенем. Тому:
Щоб мати ейлерівський цикл, граф повинен мати тільки вузли парних степенів, а щоб мати ейлерівський шлях, він повинен мати 2 вузли непарного степеня, один вузол буде початком, а інший - кінцем шляху.
Як знайти ейлерівський шлях або цикл?
Як було показано вище, якщо немає вузлів непарного ступеня, то можна почати з будь-якого вузла і закінчити на тому ж вузлі. Якщо є рівно 2 вузли з непарним ступенем, то один з них повинен починатися з будь-якого з цих 2 вузлів і автоматично закінчується на іншому.
Чи може щось піти не так при продовженні шляху?
Так, щось може піти не так. Приклад:
2 4 / \ / \ 1---3---5
Ступінь всіх вузлів дорівнює 2, крім вузла 3, який має ступінь 4. Таким чином, всі ступені рівні, і ми можемо почати будь-де. Почнемо з вузла 1 і перейдемо до вузла 3 і відкинемо всі ребра, які були пройдені.
2 4 / \ / \ 1 3---5
Край 3-2 стає містком. Перетин і видалення цього краю 3-2 дає роз'єднаний граф
2 4 / / \ 1 3---5
які вже не можна повністю пройти. Тому слід продовжувати від 3 до 4 або до 5, щоб завершити ейлеріанський цикл.
Як не допустити переходу мосту?
Щоб перевірити, чи є ребро мостом, потрібно почати з одного кінця ребра і відвідати всі сусідні вузли, всіх сусідів і так далі. Якщо один не потрапляє на іншу сторону краю, то ребро є містком. Такий повноцінний пошук всіх сусідів обходиться не дуже дорого. Але якщо це потрібно зробити до перетину кожного краю, то загальні зусилля великі. Повний алгоритм називається алгоритмом Флері, починаючи з 1883 року.
Чи існує більш ефективний алгоритм?
Більш ефективним алгоритмом є алгоритм Ієрхольцера (1873).
Якщо граф має 2 вузли з непарними степенями, то можна знайти шлях, інакше цикл, в обох випадках дуже швидкий без перевірки мостів.
1) Після видалення всіх використовуваних ребер ступінь залишилися незадіяних ребер рівна для всіх вузлів.
Чому?
Якщо ступінь вузла була парною, то до неї однаково часто наближалися, як і залишали, тому вона все одно рівна. Якщо ступінь був непарним, то це або початковий вузол, або кінцевий вузол першого шляху, а потім він був залишений + наближався в цілому непарну кількість разів, тому ступінь залишився непарний − непарний = парний.
2) Повинен бути хоча б один вузол з використаними і невикористовуваними суміжними ребрами.
Чому?
Тому що вихідний графік був зв'язаний.
Через 1) можна знайти цикл невикористовуваних ребер, починаючи і закінчуючи в цьому вузлі. Тому що 2) цей цикл може бути включений в перший шлях/цикл, коли він досягає цього вузла. Це вкладення циклів поки що невикористаних ребер повторюється доти, доки не будуть використані всі ребра, і тому ми маємо ейлерівський шлях або ейлерівський цикл, який використовує всі ребра.
Яка ціна цієї швидшої версії?
Потрібно запам'ятати попередній шлях/цикл, щоб можна було включити додатковий цикл.
Приклад:
2 4 / \ / \ 1---3---5
Нехай перший цикл буде 1-3-2-1. Вузол 3 зустрічається в цьому циклі і в невикористаному циклі 3-4-5-3. Вставляємо його в перший цикл і отримуємо цикл 1-3-4-5-3-2-1. Більше немає невикористаних ребер, тому алгоритм закінчується тут, ми знайшли цикл Ейлера.
Як можна вставити цикл за допомогою нашого інтерфейсу?
Можна натиснути «Скасувати», доки не дійдеш до останньої точки, яка має використані та невикористані ребра, як у вузлі 3 вище, а потім пройти цикл 3-4-5-3, а потім продовжити з невиконаними ребрами.
Якщо є вузол з непарним ступенем, чи потрібно знаходити їх обидва, щоб намалювати перший шлях від одного до іншого?
Ні. Якщо знайти тільки одне, то можна почати шлях з цього вузла, і він автоматично опиниться в іншому вузлі з непарним ступенем, незалежно від того, використовує він всі ребра чи ні.
Чому?
Тому що, коли людина приходить на вузол з парним градусом, то використовується непарна кількість прикріплених ребер.
Чому?
Кожного разу, коли хтось прибував до вузла, він також залишав вузол, тому використовується парна кількість ребер. Тепер приходить і використовується одне ребро на вузлі рівного ступеня. Таким чином, використовується в цілому непарне число ребер на вузлі парного степеня.
Парне − непарне = непарне, таким чином залишається непарне число невикористаних ребер. Непарне число завжди відмінне від нуля, тому є принаймні одне невикористане ребро, яке можна використовувати для виходу з цього вузла. Таким чином, одиниця буде автоматично закінчуватися на вузлі непарного степеня, незалежно від того, були використані всі ребра чи ні.
Чи є у вас пропозиція, як можна знайти один вузол непарного ступеня?
Можна, звичайно, перевірити ступінь кожного вузла, поки не знайдеться вузол з непарним ступенем. Ось спосіб без урахування.
Можна вибрати будь-який вузол. Якщо його ступінь непарна, значить, його знайшли. Якщо ні, то з цього вузла починають малювати цикл. Він буде закінчуватися або вузлом непарного ступеня, потім знайшовши вузол непарного ступеня, або один буде закінчуватися на початковому вузлі. Якщо це так, то ми ігноруємо всі використані ребра і робимо це знову, тобто вибираємо вузол і малюємо шлях або цикл. Так триває до тих пір, поки не знайдеться вузол з непарним ступенем або не залишиться більше невикористаних ребер. Тоді всі вузли мають рівну ступінь.
Що робити, якщо графік схожий на місто з вулицями з 1-стороннім рухом?
Граф з ребрами, які можна обійти тільки в одному напрямку, називається орієнтованим графом. Виходячи з наведеної вище аргументації, наступні 2 твердження є правдоподібними.
Орієнтований граф допускає ейлеровский цикл тоді і тільки тоді, коли для кожного вузла число вихідних ребер дорівнює числу вхідних ребер.
Орієнтований граф допускає ейлерову траєкторію тоді і тільки тоді, коли
• один вузол має на одне ребро більше, ніж вхідні,
• один вузол має на одне вхідне ребро більше, ніж вихідні ребра, і
• всі інші ребра мають однакову кількість вихідних і вхідних ребер.
Слідкуйте за оновленнями або підписуйтесь на них: