Алгоритм поиска минимального остовного дерева, когда стоимость задается путем умножения весов ребер

Недавно меня спросили, могу ли я найти алгоритм для вычисления остовного дерева с минимальной стоимостью данного графа, где общая стоимость остовного дерева определяется произведением стоимостей ребер, а не их суммой.

Существует несколько алгоритмов для вычисления обычного остовного дерева миниума, но я не уверен, как их настроить для упомянутого выше случая. Есть идеи?

Спасибо.


person AlexTex    schedule 18.11.2010    source источник


Ответы (3)


Поскольку log(произведение затрат на ребра) = сумма (log(стоимости на ребрах)), просто преобразуйте веса ребер в логарифмическое преобразование и найдите остовное дерево с минимальной стоимостью для этих весов.

person Aniko    schedule 18.11.2010
comment
ооо хороший ответ! я просто упомяну ограничения, если это не очевидно - все затраты ДОЛЖНЫ быть положительными, и все ДОЛЖНЫ быть > 1. - person jon_darkstar; 18.11.2010
comment
@jon_darkstar Вы правы, все они должны быть положительными, но я считаю, что значения 0-1 в порядке. Результирующее дерево не будет подграфом с минимальной стоимостью (поскольку добавление дополнительных ребер потенциально может снизить стоимость), но оно по-прежнему будет деревом с минимальной стоимостью. - person Aniko; 18.11.2010
comment
да, вы правы, ограничение "дерево" уже запрещает такую ​​глупость. - person jon_darkstar; 18.11.2010
comment
@Aniko: Очень интересный подход. - person AlexTex; 18.11.2010
comment
Я считаю, что вам даже не нужно делать преобразование журнала. Стандартные алгоритмы MST не используют ничего, кроме сравнения весов ребер, а log — монотонная функция, поэтому порядок не меняется. - person jonderry; 18.11.2010
comment
@jonderry Я также думаю, что вы правы - вы можете использовать исходные веса. Однако, чтобы доказать это, нужно преобразование журнала :) - person Aniko; 19.11.2010
comment
@Aniko, (0-1] - приемлемый диапазон для журналов, но AlexTex должен остерегаться ребер с нулевым весом, поскольку log (0) не определен. - person Dijkstra; 19.11.2010
comment
@Dijkstra Хороший вопрос. Конечно, если есть ребро с нулевым весом, то проблема тривиальна, потому что любое остовное дерево, содержащее его, будет минимальным по продукту с продуктом 0. - person Aniko; 19.11.2010

Поскольку логарифмирование — это монотонное преобразование, минимальное остовное дерево будет точно таким же, если взять логарифм всех весов и оставить все веса такими, какие они есть. Итак: НЕТ разницы в нахождении МСТ по сумме всех весов и по произведению всех весов.

Для статьи о доказательстве того факта, что минимальное остовное дерево графа инвариантно к монотонному преобразованию весов в графе, наберите в гугле «Сага о минимальном остовном дереве». И первая ссылка будет той, которая вам нужна. Стр. 167, монотонный изоморфизм.

person Yulia    schedule 14.07.2011

Моя лучшая идея - найти ВСЕ минимальные (в смысле ненужных ребер) остовные деревья методом грубой силы, выбрать тот, у которого наименьший продукт.

Большинство (или все) более эффективных решений больше не применяются - в основном, потому что оптимальные решения БОЛЬШЕ НЕ обязательно содержат оптимальные подзадачи. (Какие ограничения? Очень важно - ребра со стоимостью меньше 1 на самом деле имеют отрицательную стоимость, ребра длины 1 свободны. ЛУЧШЕ, чтобы все они были положительными!)

Я не уверен, что этот вопрос действительно имеет смысл. Во-первых, вы должны либо указать стоимость цикла (или принять 1), потому что мы не можем взять продукт с нулем. Разделение пути работает по-другому, путешествие по одному и тому же пути дважды стоит c ^ 2? Кроме того, я чувствую, что это должно быть другое качество пути с другим именем, чем «стоимость».

person jon_darkstar    schedule 18.11.2010
comment
Ради обсуждения мы могли бы предположить, что все затраты являются положительными числами, большими или равными 1. Спасибо за идею. - person AlexTex; 18.11.2010