Нужен алгоритм вроде задачи коммивояджера, только с заданным в начале

конечным пунктом. Ничего дельного не нагуглил, может подскажите ключевые слова?

UPD: вроде нашел решение, нужно добавить фиктивный узел для которого расстояние до конечной и начальной точки будет равно 0, а для всех остальных inf, но в источнике говориться, что это может плохо повлиять на эвристические алгоритмы

7 ответов

17 просмотров

Первое, что пришло в голову - не делайте inf и 0, а вычислите ровно столько, чтобы эти граничные условия “мягко” сводили решение к нужной начальной точке. Возможно, это не сломает эвристику, но выдаст решение, которое будет удовлетворять граничному условию. Не знаю, будет это работать, или нет)

.- Автор вопроса
George Polevoy
Первое, что пришло в голову - не делайте inf и 0, ...

Не понял. О каком из методов речь? Кстати с эвристическими вообще не работает решение с 0 и inf, а точные не подходят, т.к. у меня 100 объектов.

.
Не понял. О каком из методов речь? Кстати с эврист...

Лучше скажите, какой метод не сработал у вас? Возьмите SA, подобными приемами довольно часто приходится задавать граничные условия.

.- Автор вопроса
George Polevoy
Лучше скажите, какой метод не сработал у вас? Возь...

Жадный, который про ближайшего соседа, но впринципе ожидаемо, что он не работает. SA это имитация отжига?

.
Жадный, который про ближайшего соседа, но впринцип...

Жадным вы будете ждать до тепловой смерти вселенной, это да. Да, отжиг неплохо такие решает.

.
Жадный, который про ближайшего соседа, но впринцип...

Одно наблюдение - методы, основанные на cost-функции плохо работают, если не предусмотреть плавность границы стоимости. Вкратце, будет плохо работать, если просто сказать: if(...) return 100000000000; Лучше сделать как-то, чтобы в стоимость был добавлен какой-то градиент, и промежуточные решения могли эволюционировать плавно от неправильного решения к аравильному. Либо, в вашем случае, можно попросту добавить в оператор мутации последним действием каноникализацию модели - принудительно перевязывать элемент в нулевую позицию.

.
Жадный, который про ближайшего соседа, но впринцип...

Кажется, что можно и через стоимость выразить условие, например, добавить в стоимость позицию элемента в списке. Но нужно следить за тем, чтобы вес стоимости правильного с точки зрения граничных условий решения не вносил дисбаланс. Подобный дисбаланс может создать "овражистость" кост-функции, которая затрудняет поиск решения. Хотя SA присуща способность назодить глобальный экстремум, если будет дисбаланс, то требуемое время модет вырасти неопределенно.

Похожие вопросы

Обсуждают сегодня

Всем привет Есть достаточно базовая задача: Дан неориентированный граф. Требуется определить, есть ли в нем цикл, и, если есть, вывести его. Входные данные подаются в виде ма...
Αλeksandr
10
Привет всем. Подскажите, как можно данную задачу более менее эффективно решить? В столовой одного известного Завода вот-вот начнётся обед. На обеде есть три гарнира — макарош...
Vitaliy
6
всем привет. У меня есть неупорядоченный массив точек(в моем случае в трёхмерном пространстве). Есть критерий связанности точек: если евклидово расстояние между ними меньше за...
Павлик Ливаткин
31
Доброе утро. Такой вопрос: есть ли какие-то практически полезные меры вычислительной мощности (в смысле computational complexity) для реальных машин, с ограниченными ресурсам...
Yaroslav Schekin
15
Всем привет Пытаюсь решить следующую задачу: https://informatics.msk.ru/mod/statements/view.php?id=6992&chapterid=101#1 Строка S была записана много раз подряд, после чего из ...
Αλeksandr
10
Здравствуйте. Есть задача нужно найти наименшое число P где фактриал P делиться на 10^N. Ограничения 10^9. Знаю что нужно найти такой P в конце как минимум N нулей. Решение с ...
. Azmiddin
20
Друзья, практический вопрос надо счиать скользящую медиану в последовательности по заданному окну (длины N) тупой вариант - взять значения в окне, отсортировать, взять элеме...
Стас Выщепан
17
Должна-ли работать такая стратегия: Мы каждую секунду бросаем монетку - орел или решка. Если орел - покупаем акцию на все деньги, если у нас есть деньги, или продаем все акци...
George Polevoy
13
#pragma once #include <iostream> #include <vector> template <typename T, typename Comp = std::less<T>> class Heap { public: Heap() = default; Heap(const std::vector<T>&...
Степан
1
Как можно сжимать временные ряды в памяти? У меня есть исторические стоимости ценных бумаг. Данные для каждой минуты в истории OHLC (Open, High, Low, Close). Соответственно, O...
George Polevoy
10
Карта сайта