У меня есть график с одним источником и несколькими пунктами назначения.Я пытаюсь найти способ обозначить проблему, чтобы найти правильный тип алгоритма для решения.Цель состоит в том, чтобы как можно меньше путей достигло всех точек, однако пути должны всегда следовать точкам сетки (т. Е. Прямым углом).
Например:
Origin: (0, 0)
Point A: (3, 3)
Point B: (3, 0)
Point C: (1, 3)
Путь от Происхождения -> C -> A великолепен, потому что для перехода к точке A требуется только 2 дополнительных сегмента, потому что он смог разделить путь от Origin -> C.
Некоторые вещи, которые я обдумал:
- Исчерпывающий все варианты пути ко всем точкам и затем исчерпывающе пробуя все комбинации.Это, очевидно, грубая сила и самый медленный метод.Не очень хорошо масштабируется.
- Создаем матрицу из 1 от начала координат до точки _, затем выполняем добавление матрицы, чтобы найти наибольший трафик точек.Затем повторно выполните какой-либо тип исчерпывающего поиска, отдав предпочтение тем путям, которые следуют за сегментами с высоким трафиком.
Я хотел бы сделать так, чтобы нарисовать «лучшие» способы добраться до каждогоукажите точку от начала координат, а затем сравните каждый путь с другим путем, чтобы увидеть, где они могли бы разделить пути.Это кажется рекурсивно хитрым.
Итак, мой вопрос состоит не столько в поиске ответа на конкретную проблему, сколько в попытках выяснить, как подойти к проблеме, т. Е. Какой путь (каламбур намеревался) пройти, когдапытаясь решить.
В целом, ищем оценки путей на основе (пока нет определенного порядка):
- Количество общих сегментов против уникальных сегментов
- Количество витков(предпочитая прямые)
- Наименьшее расстояние