Полный взвешенный график G, нахождение весов и одна машина

Я много читал о темах Complete Weighted Graph и Hamiltonian Tour на этом сайте, которые спросил один из пользователей, я спросил много сотрудников в моем университете, но не смог получить хороший ответ, я изменил важную часть этого вопроса следующим образом:

Задача A: Имея полный взвешенный граф G, найти weights гамильтонова тура с минимальным весом.

Задача B: Имея полный взвешенный граф G и действительное число R, имеет ли граф G гамильтонов тур с весом не более R?

Предположим, что есть машина, которая решает B. Сколько раз мы можем вызывать B (каждый раз, когда заданы G и действительное число R), чтобы решить задачу A с помощью этой машины? Предположим, что сумма ребер в G до M.

  1. Мы не можем этого сделать, потому что существует неисчисляемое состояние.

  2. О(|Е|) раз

  3. O(lg м) раз

  4. поскольку A является NP-сложным, это невозможно сделать.

Я прочитал этот файл, на странице 2 он написал:

а) оптимизационная задача (в строгом смысле): найти оптимальное решение

б) задача оценки: определить значение оптимального решения

c) связанная задача: при заданной границе B определить, является ли значение оптимального решения выше или ниже B.

в следующих двух абзацах

Чтобы использовать c) при решении b), мы используем тот факт, что возможные значения комбинаторной задачи обычно дискретны и могут быть приняты целыми. Предположим, что мы можем решить связанную задачу c) за время T. Для соответствующей задачи вычисления b) обычно априори известно, что значение находится в пределах определенного диапазона [L, U] целых чисел. Используя бинарный поиск, мы решаем задачу оценки с помощью log | У - Л | обращений к связанной задаче c), и, следовательно, за время T log | У - Л |.

а в следующем он написал:

Пример: TSP на взвешенном графе Kn = (V, E, w: E -> Reals), |V| = п, |Е| = n-выбрать-2. Используйте в) для решения б). Тур или гамильтонов цикл в графе из n вершин имеет ровно n ребер. Таким образом, сумма S n самых длинных ребер является верхней границей длины оптимального тура. С другой стороны, сумма всех m выбранных n подмножеств n ребер представляет собой конечный набор чисел, и минимальная ненулевая разность d между двумя из этих чисел определяет степень детализации длин тура. Два разных тура либо имеют одинаковую стоимость, либо их длины отличаются не менее чем на d. Таким образом, бинарный поиск, вычисляющий log(S/d) связанных задач, определяет длину (значение) оптимального тура.

Мой вопрос: можем ли мы адаптировать это решение для выбора (3) таким образом?


person Community    schedule 15.03.2015    source источник


Ответы (1)


Предположим, что есть машина, которая решает B. Сколько раз мы можем вызывать B (каждый раз, когда заданы G и действительное число R), чтобы решить задачу A с помощью этой машины? Предположим, что сумма ребер в G до M.

O(log M).

Выберите a = 0, b = M.

  1. установить R = (a + b) / 2. Решите B с этим R.

  2. Результат True

    Тогда есть гамильтонов тур с весом не более R. Есть ли один для более жесткой верхней границы? Установите b = R и повторите, чтобы выяснить это (перейдите к 1).

  3. Результат False

    Тогда нет гамильтонова тура с весом не более R: минимальный вес больше. Установите a = R и повторите (перейдите к 1).

Это алгоритм двоичного поиска.

Хотя теоретически этот алгоритм не будет работать со всеми действительными числами (особенно с иррациональными), на практике вы не можете иметь иррациональные числа. В любом случае компьютер может представлять только аппроксимации иррациональных чисел, поэтому вы можете использовать двоичный поиск, чтобы получить аппроксимацию, подходящую для такого количества десятичных знаков, для которых вы хотите запустить алгоритм.

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

person IVlad    schedule 15.03.2015
comment
как некоторые люди заметили, что вы не можете применять бинарный поиск в несчетном множестве. Поскольку мы говорим о действительных числах, мы не можем применить бинарный поиск в диапазоне [0-M] это неверно? - person ; 15.03.2015
comment
@user4249446 user4249446 - это верно в теории, но на практике у вас не может быть иррациональных чисел. В любом случае компьютер может представлять только аппроксимации иррациональных чисел, поэтому вы можете использовать двоичный поиск, чтобы получить аппроксимацию, подходящую для такого количества десятичных знаков, для которых вы хотите запустить алгоритм. - person IVlad; 15.03.2015
comment
@IVlad IVlad, можем ли мы с уверенностью сказать, что (3) верно или нет? - person ; 15.03.2015
comment
@ user4249446 (3) выполнимо с инженерной точки зрения: я могу реализовать алгоритм, который даст вам приблизительное значение за это время. Если это должно работать для действительных чисел, то (3) не работает, и лично я не могу помочь с этим вариантом задачи. - person IVlad; 15.03.2015
comment
в этом файле он говорит: "В--- настоящий!" - person ; 15.03.2015
comment
@IVlad, пожалуйста, проясните, если вы хотите выбрать один из этих вариантов, который вы должны выбрать? - person ; 15.03.2015
comment
Я бы выбрал (3) в контексте информатики, как объясняет мой ответ. Я бы предпочел отпустить меня домой в чисто математическом контексте. - person IVlad; 15.03.2015
comment
мой последний вопрос: почему в этом файле не упоминается реальный vlue и не говорится O (log n)? - person ; 15.03.2015
comment
Файл, на который вы ссылаетесь, похоже, имеет дело с целыми числами, поэтому в этом случае все яснее. - person IVlad; 15.03.2015
comment
в примере он написал: E -> Reals - person ; 15.03.2015
comment
Он также говорит On the other hand, the sums of all m choose-n subsets of n edges is a finite set of numbers. Это набор, на котором он выполняет бинарный поиск. - person IVlad; 15.03.2015
comment
это означает, что снова (3) верно определенно? :) я думаю, что это предположение в моем вопросе верно. - person ; 15.03.2015
comment
Нет, с чисто математической точки зрения, не учитывающей физические ограничения компьютеров, (3) неверно (по крайней мере, мой алгоритм неверен). В противном случае это правда. Вам решать, хотите ли вы рассматривать это как чисто математическую задачу или как практическую задачу. - person IVlad; 15.03.2015
comment
Обратите внимание, что этот ответ подробно обсуждался в связанной ветке, и большинство участников согласились с тем, что он не подходит из-за теоретического аспекта этой проблемы. Однако порядок сходимости является экспоненциальным, и вы можете довольно быстро получить любую произвольную границу ответа. - person amit; 16.03.2015
comment
@amit, ты не согласен с (3)? - person ; 16.03.2015
comment
@user4249446 user4249446 У меня были сомнения, но, в конце концов, их не было. У него есть недостатки при решении теоретических задач, например, рассмотрите граф V={a,b,c} и E={(a,b,1/3),(b,c,1/3), (a,c,1/3)}. В решении бинарного поиска вы установите верхний предел M=1 и начнете бинарный поиск между 0 и 1, но на каждом шаге ваше текущее число равно x/2^-i для некоторого x,i. Вы не сможете найти 2/3 с этим. Однако вы можете приблизиться к ней с экспоненциальной скоростью, но вы никогда не найдете точно 2/3. - person amit; 16.03.2015
comment
окей, пожалуйста, проверьте мой вывод, если мы увидим это решение в информатике, то (3) будет правильным, но на практике оно имеет недостатки. я прав ? - person ; 16.03.2015
comment
@ user4249446 Информатика является теоретической, и в информатике (3) кажется неверным (или, по крайней мере, я не вижу решения, которое делает это с желаемой временной сложностью, только приближение) - person amit; 16.03.2015
comment
мой последний вопрос: если вы строго выбираете один из этих вариантов, какой из них вы выберете? :) Спасибо. @амит. - person ; 16.03.2015
comment
@ user4249446 (2), как описано в принятом (и отредактированном) ответе исходной темы. - person amit; 16.03.2015
comment
@amit, я разговариваю с профессором, который написал этот PDF-файл, упомянутый в моем вопросе, если у вас есть время, поговорите со мной. - person ; 19.03.2015
comment
@user4249446 user4249446 Я добавил еще одно уточнение к ответу профессора chat.stackoverflow.com/rooms/73032/ я - person amit; 19.03.2015
comment
так что я заключаю до сих пор, (б) лучший вариант. @амит - person ; 19.03.2015
comment
@amit Есть какое-то недоразумение? Для графика, который вы приводите в качестве примера выше, оптимум равен 1, а не 2/3. - person Codor; 10.04.2015
comment
@Codor нет, это гамильтоновский путь 1->2->3, который стоит 1\3+1\3=2\3 - person amit; 10.04.2015