![]() |
|
|
![]()
|
|
| Mayk |
|
|||
![]() ^аВаТаР^ сообщение>> ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2616 Регистрация: 22.5.2005 Где: за границей разум а Репутация: 2 Всего: 134 |
Есть граф, который невозможно обойти так, чтобы пройти через каждое ребро ровно один раз. Нужно разбить этот граф на минимальное кол-во графов в каждом из которых это возможно.
Иными словами из произвольного рисунка нужно сделать минимальное кол-во рисунков, которые можно нарисовать не отрывая карандаша от бумаги. У кого какие идеи как это можно сделать? Это сообщение отредактировал(а) Mayk - 29.6.2005, 10:30 -------------------- Здесь был кролик. Но его убили. Человеки < кроликов, йа считаю. |
|||
|
||||
| SoWa |
|
|||
![]() Харекришна ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2422 Регистрация: 18.10.2004 Репутация: 6 Всего: 74 |
А это граф или орграф? Это имеет значение.
-------------------- Всем добра |
|||
|
||||
| ~FoX~ |
|
|||
![]() НЕ рыжий!!! ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2819 Регистрация: 8.10.2003 Где: Зеленоград Репутация: 2 Всего: 68 |
SoWa
Скорее всего имеется ввиду ориентированный граф. Mayk Если есть кусок/ки котрый нельзя пройти не проходя два раза по ребру его и делай отдельным графом и исключай из исходного. Проверяй оба графа на "проходимость"........Количество полученных графов будет равно количеству "непроходимых" кусков. |
|||
|
||||
| Mayk |
|
|||
![]() ^аВаТаР^ сообщение>> ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2616 Регистрация: 22.5.2005 Где: за границей разум а Репутация: 2 Всего: 134 |
SoWa
Граф не ориентированый. Хотя про ориентированный тоже было бы интересно послушать. Задача представляет теоретический интерес. ~FoX~ А не может случиться так, что в один кусок можно поместить два и более ребра, через которые нельзя было пройти в исходном графе? -------------------- Здесь был кролик. Но его убили. Человеки < кроликов, йа считаю. |
|||
|
||||
| ~FoX~ |
|
||||
![]() НЕ рыжий!!! ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2819 Регистрация: 8.10.2003 Где: Зеленоград Репутация: 2 Всего: 68 |
Что за граф который нельзя обойти?
Так вот и выдиляй "непроходимое" ребро и еще одно в отдельный граф. |
||||
|
|||||
| esperant0 |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 714 Регистрация: 20.5.2005 Репутация: 4 Всего: 14 |
Обычный не Эйлеровский граф. Возьмите хотя бы задачу о мостах в Кенисберге. -------------------- Student->Teacher Assistant ->Research assistant->Microsoft Software Development Engineer Пользователь получил наказание за то, что проигнорировал замечание которое было написано модератором а затем стерто и которое он - пользователь не мог видеть. |
||||
|
|||||
| Mayk |
|
||||
![]() ^аВаТаР^ сообщение>> ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2616 Регистрация: 22.5.2005 Где: за границей разум а Репутация: 2 Всего: 134 |
...пройдя через каждое ребро лишь раз. Например тетраэдр. Или (топологически равный ему) значок мерса(грубо говоря, буква Y вписанная в окружность). Это нельзя нарисовать не отрывая карандаш от бумаги.
Определить то, что одно ребро мешает можно достаточно просто. А как определить, что если подцепить еще пару ребёр, то исходному графу полегчает? -------------------- Здесь был кролик. Но его убили. Человеки < кроликов, йа считаю. |
||||
|
|||||
| poor_yorik |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 148 Регистрация: 12.1.2005 Где: Общаги г. Киева Репутация: 3 Всего: 8 |
Шаг 1. Выделяешь все копоненты связности. Для каждой делаешь шаг 2. Ответы сумируешь.
Шаг 2. А) Если все вершины графа имеют парную степень, то значит можно обойти по одному разу. Ответ - 1. То же и для графа с одной вершиной. Б) Если есть вершины нечетной степени, то ответ - (количество вершин нечетной степени/2). Задача из Всеукраинской олипиады по программированию этого года. --------------------
Семь раз отмерь, один раз - откомпиль.... Семь раз отпей, один раз - отлей... Семь раз отъешь, один раз - не жадничай и другим дай... |
|||
|
||||
| Mayk |
|
||||
![]() ^аВаТаР^ сообщение>> ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2616 Регистрация: 22.5.2005 Где: за границей разум а Репутация: 2 Всего: 134 |
Вообще-то, если нечетных вершин две, то тоже можно за раз обойти. Нужно начать с нечетной вершины. Пример: квадрат и треугольник, у которых одна сторона общая.
В моём случае граф с одной вершиной гарантированно имеет ноль ребер. Задача стукнула в голову после непродолжительного рисования линий в OpenGL'е(там линии можно рисовать так- координата 0 и координата 1 определяет первую линию, координата n-1 и координата n, где n >= 2 определяют последующую линию). Это сообщение отредактировал(а) Mayk - 1.7.2005, 21:34 -------------------- Здесь был кролик. Но его убили. Человеки < кроликов, йа считаю. |
||||
|
|||||
| poor_yorik |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 148 Регистрация: 12.1.2005 Где: Общаги г. Киева Репутация: 3 Всего: 8 |
Mayk, как раз это и правильно. Мой алгоритм находит минимальное количество частей на которые нужно разбить даный граф, чтобы в каждом из полученых графов можно было обойти все ребра по одному разу.
А если у графа две непарные вершины, то начиная с одной из них мы можем обойти все ребра по разу и закончить в другой вершине. Значить граф нужно разбить на один граф ( Алгоритм правильный, это я гарантирую. --------------------
Семь раз отмерь, один раз - откомпиль.... Семь раз отпей, один раз - отлей... Семь раз отъешь, один раз - не жадничай и другим дай... |
|||
|
||||
| Guest |
|
|||
|
Unregistered |
poor_yorik
Вроде работает, но на счет связности кусуов не очень очевидно получается (при условии связности исходного графа) |
|||
|
||||
![]()
|
| Правила форума "Алгоритмы" | |
|
|
Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Алгоритмы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |