Я работаю над алгоритмом, который кажется очень простой проблемой, но я не могу найти для него эффективный алгоритм. Проблема заключается в следующем: У меня есть список чисел (0-50) и место начала и вам нужно посетить каждый из них, одновременно минимизируя пройденное пройденное расстояние. Некоторые пары мест требуют, чтобы я сначала побывал в другой (так, чтобы посетить 29, я должен сначала что-то набрать 26). Однако я не могу понять, как это сделать, просто не генерируя каждый вариант. Есть идеи?1D travelingsalesman с ограничением
Например, мы имеем следующую
startLocation=25;
targetPairs=[[1,5],[7,12],[22,23]]
visitLocations=[4,6,8,2]
это означает, что мы должны посетить 1 до 5, 7 до 12 и 22, прежде чем 23. Мы также должны посетить расположение 4,6,8 и 2 Один из вариантов, который нужно начать, - это пойти слишком 1 (расстояние 24), затем перейдите к 4 (расстояние 3 всего 27), затем перейдите к 5 (расстояние 1 всего 28), тогда мы можем перейти на 6 (всего 1 всего 29) или для полного набора (7 (30), 8 (31), 12 (35), 22 (45), 23 (46)).
Логично ограничение количества мест, которые мы должны посетить, составляет 50 пар и 50 мест.
Любая идея для лучшего имени и почему закрытое голосование? – Thijser
Можете ли вы привести несколько примеров? И 1D означает, что все точки находятся в оси Ox? –
Я добавил пример того, что я имею в виду. – Thijser