Всем добрый день!
Вопрос не из легких, но вдруг кто-то из присутствующих здесь когда-либо сталкивался с этой задачей.
Необходимо реализовать следующий алгоритм на С++, уже долго над этим сижу, никак не могу придумать, как правильно это сделать. Есть такая таблица с решением задачи (прикрепила картинку).
Имеется матрица с тремя столбцами (A,B,Sij). A и В - города. Sij - показатель, который нужно рассчитывать для данного алгоритма. Первая пара А и В заносится в вектор, в данном случае маршрут 1 (столбик "маршрут", где 0 - точка, откуда выезжает машина, и куда возвращается). Есть предел в 500 км для маршрута. Для каждой следующей строчки маршрута мы проверяем два условия:
1 - оба пункта А и В вместе не задействованы в каком-либо из ранее построенных маршрутов
2 - один из пунктов является первой или последней точкой в каком-либо из ранее построенных маршрутов (например, для строки 2, пункт B (10) был первым в маршруте из предыдущей строки)
Если оба условия выполнены, ставим + в 4 и 5 столбцах и добавляем этот отрезок пути в маршрут (например, было 0-10-11-0, а после добавления отрезка 1-10 стало 0-1-10-11-0) Далее считаем общее расстояние маршрута (по матрице расстояний, которая дана), и если оно меньше 500 км, принимаем этот маршрут как новый.
Аналогично все для всех следующих строчек. Если в какой-либо строчке оба пункта еще нигде не использовались, создаем еще один маршрут, называем его 2 и последующие строчки проверяем уже как для 1 маршрута, так и для второго.
Алгоритм продолжается, пока не будут задействованы все пункты.
Я не прошу полного решения данной задачи, я надеюсь, что мне хотя бы помогут с идеей, как логично собрать в кучу столько проверок для каждой строки. Потому что я в них уже запуталась (этот алгоритм - реализация метода Кларка-Райта для решения задачи маршрутизации транспорта). Заранее спасибо!
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Вопрос закрыт, так как на Stack Overflow на русском вопросы принято задавать только на русском языкеПожалуйста, переведите ваш вопрос на русский...
Мне нужно получить HWND или ID потока окна текущего процесса (не моего, я делаю DLL инъекцию) в котором OpenGL производит отрисовку чтобы установить...
Всем доброго дня! Работаю в C++ builder 10 и создаю пустую форму, которая по-умолчанию наследуется от класса TFormСтолкнулся с проблемой, корень которой...