Я пытаюсь определить оптимальный случай поиска, чтобы сравнить с алгоритмом поиска, который я написал.Минимальное связующее дерево между местом начала и набором нужных узлов
У меня есть набор узлов с пометкой «обязательный» и узел с надписью «start», остальные обозначены «необязательно». Я хочу найти оптимальное количество узлов, которые мне нужно будет расширять, чтобы обнаружить все необходимые узлы, учитывая, что я первый раз расширяю узел «start».
- Я считаю, что я ищу, это минимальное остовное дерево, но обрезка всех ветвей, которые не заканчиваются на «требуемом» узле. Это Steiner tree problem?
- Если мой график невзвешен, это размер дерева Штейнера и Минимальное связующее дерево - то же самое?
- Что, если что-нибудь могу сказать о размере дерева? то есть что-то вроде (размер минимального размера spanning tree = средний короткий путь * # требуемые узлы ... Я не думаю, что это правда, но было бы неплохо вычислить среднее значение, основанное на связности или что-то еще).
Несколько замечаний:
- Это не проблема путешествия продаж, потому что я не нужен путь существовать между каждым узлом требуется, я просто хочу, чтобы открыть каждый нужный узел.
- Мой граф неориентированный и невзвешенное (или в равной степени взвешенным по этому вопросу)
- Мой график имеет в среднем около 100 требуемых узлов, и, возможно, тысячи дополнительных узлов
По определению, если вы запустите свой алгоритм, оптимальное дерево будет тем, которое минимизирует общие взвешенные пути, соединяющие узлы. Поэтому любой подпуть вдоль дерева будет, если его удалить (и другие пути останутся неизменными), будет оптимальным путем, который вам нужно будет воссоздать, чтобы связать нужные элементы. – ninjagecko