Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
Turbo Site Admin
Зарегистрирован: 19.02.2006 Сообщения: 248
|
Добавлено: Ср Апр 16, 2008 8:40 am Заголовок сообщения: Ваши решения для задачи "Длинная цепь" |
|
|
В этой теме можно обсудить ваш подход к решению этой задачи.
Сколько времени вам потребовалось для решения? Использовали ли вы брутфорс? |
|
Вернуться к началу |
|
|
Stanislav Markevich
Зарегистрирован: 21.02.2006 Сообщения: 12 Откуда: Москва
|
Добавлено: Ср Апр 16, 2008 1:24 pm Заголовок сообщения: |
|
|
В итоге решил так: нашел цепь длинною 1056 и 6 элементов вставил руками
Цепь из 1056 нашел поиском в глубину: в качестве первого элемента брал все числа, а следующим в цепи выбирал то число, которое дает меньше вариантов перебора. Поиск обрывал после определенного числа найденных цепей.
Такое решение заняло около часа. |
|
Вернуться к началу |
|
|
Sergey Kreys
Зарегистрирован: 15.04.2008 Сообщения: 2
|
Добавлено: Ср Апр 16, 2008 5:48 pm Заголовок сообщения: |
|
|
Все просто: находим перебором гамильтонов путь в заданном графе, и выводим его. Стартовую вершину мы знаем - у нее степень равна 1.
При ~хорошей реализации все находится примерно за 5 минут. Вручную можно было ничего не делать |
|
Вернуться к началу |
|
|
Stanislav Markevich
Зарегистрирован: 21.02.2006 Сообщения: 12 Откуда: Москва
|
Добавлено: Ср Апр 16, 2008 6:18 pm Заголовок сообщения: |
|
|
Sergey Kreys писал(а): | Все просто: находим перебором гамильтонов путь в заданном графе, и выводим его. Стартовую вершину мы знаем - у нее степень равна 1.
При ~хорошей реализации все находится примерно за 5 минут. Вручную можно было ничего не делать |
пробовал и не нашел. просто тупой перебор??? |
|
Вернуться к началу |
|
|
DAle
Зарегистрирован: 21.02.2006 Сообщения: 24
|
Добавлено: Ср Апр 16, 2008 10:33 pm Заголовок сообщения: Re: Ваши решения для задачи "Длинная цепь" |
|
|
Turbo писал(а): | В этой теме можно обсудить ваш подход к решению этой задачи.
Сколько времени вам потребовалось для решения? Использовали ли вы брутфорс? |
Сначала проанализировал степени вершин, нашлась одна вершина со степенью 1. С нее начинал поиск. Далее, на каждом шаге выбирал из соседних вершин вершины с минимальной степенью, делал их случайную перестановку и по очереди просматривал, пересчитывая степени при этом. В общем-то пришлось не сильно долго подбирать seed для генератора случайных чисел, чтобы нашелся ответ. Хотя идей еще была масса. На все ушло часа полтора. |
|
Вернуться к началу |
|
|
Sergey Kreys
Зарегистрирован: 15.04.2008 Сообщения: 2
|
Добавлено: Сб Апр 19, 2008 12:23 am Заголовок сообщения: |
|
|
Stanislav Markevich писал(а): | Sergey Kreys писал(а): | Все просто: находим перебором гамильтонов путь в заданном графе, и выводим его. Стартовую вершину мы знаем - у нее степень равна 1.
При ~хорошей реализации все находится примерно за 5 минут. Вручную можно было ничего не делать |
пробовал и не нашел. просто тупой перебор??? |
Не совсем. Под "хорошей" реализацией как раз понималась реализация перебора, построенная на основе хорошо известных предположений о порядке просмотра смежных с данной вершин на очередной итерации. К примеру, на очередном шаге "выгоднее" пытаться сначала пойти в вершину с наименьшей степенью(*); пройдя ребро, "удаляем" его из графа.
* - при равенстве степеней выбирается вершина, исходя из каких-нибудь других соображений (здесь, как выяснилось, большой простор для творческих идей) |
|
Вернуться к началу |
|
|
xaxa3217
Зарегистрирован: 19.04.2008 Сообщения: 2
|
Добавлено: Сб Апр 19, 2008 11:22 am Заголовок сообщения: |
|
|
если честно, то сколько по времени поиск цикла шел? у меня 950 вершин сразу набирал, а до 1061 думаю пришлось бы пару деньков сидеть, если не больше. |
|
Вернуться к началу |
|
|
zhengxi
Зарегистрирован: 25.03.2008 Сообщения: 19
|
Добавлено: Сб Апр 19, 2008 9:30 pm Заголовок сообщения: |
|
|
xaxa3217 писал(а): | если честно, то сколько по времени поиск цикла шел? у меня 950 вершин сразу набирал, а до 1061 думаю пришлось бы пару деньков сидеть, если не больше. |
В первой сотне уже был результат с 1061
Или повезло с рандомайзером, или путей такой длины есть очень много |
|
Вернуться к началу |
|
|
astapoff
Зарегистрирован: 13.02.2007 Сообщения: 70 Откуда: Могилев, Беларусь
|
Добавлено: Сб Июн 14, 2008 3:16 pm Заголовок сообщения: |
|
|
У меня способ как-то меньше мудренный...
Для каждого числа я находил количество других чисел, в которые может быть преобразовано это число. вот. оказалось, что есть одно число, которое может быть преобразовано только в два других числа. вот с этого числа и начинал строить последовательность. после каждого нового добавления, я для всех чисел пересчитывал вот это количество чисел, в которые могут они быть преобразованы... ведь я же добавил число в последовательность, значит некоторые числа, которые раньше могли в него преобразоваться, уже не смогут этого сделать... так я нашел 1055 чисел... оставшиеся числа тоже составили из себя цепь, но эту цепь нужно было впихнуть в середину говотовой цепи из 1055 чисел...
Кто не понял меня? |
|
Вернуться к началу |
|
|
|