Дополнение цепь представляет собой последовательность положительных целых чисел , где х 1 = 1 , и каждый индекс я ≥ 2 , мы имеем й я = х J + х K для некоторых индексов 1 ≤ J , к < я . Длина прибавления цепи п ; мишень из капельной цепи х .
Что известно о сложности следующей задачи: Учитывая целое число , какова длина самой короткой цепочки сложения, целью которой является N ? Это NP-жесткий?
Википедия указывает на статью 1981 года, написанную Дауни, Леонгом и Сетхи, в которой доказывается, что следующая связанная проблема является NP-трудной: учитывая набор целых чисел, какова минимальная длина цепочки сложений, которая включает весь набор? Некоторые авторы, очевидно, утверждают, что эта статья доказывает, что задача с одной целью является NP-трудной, но это не так.
Ответы:
Проблема упоминается как открытая в докторской диссертации Эрика Лемана «Алгоритмы аппроксимации для сжатия данных на основе грамматики» в 2002 году. С стр. 35 диссертации:
«Тем не менее, точное решение проблемы цепочки сложения остается странно неуловимым. М-арный метод выполняется во времени polylog (n) и дает приближение 1 + o (1). Однако, даже если экспоненциально больше времени, поли ( n), точный алгоритм не известен ".
источник
А в основной статье диссертации Лемана есть хороший обзор проблемы (раздел VB) со ссылками.
источник
Я хотел бы задокументировать некоторый частичный прогресс - казалось бы, многообещающий - к алгоритму полиномиального времени. ОБНОВЛЕНИЕ : добавлены некоторые детали, чтобы учесть глюк, отмеченный @David (спасибо!).
Подход заключается в том, чтобы свести это к экземпляру CSP-серверов MIN-ONES EVEN-3 (MOEC), что является проблемой, решаемой за полиномиальное время. Доказательство сокращения немного нечетко, но я надеюсь, что оно существует!
Экземпляр MOEC - это семейство мерных подмножеств множества переменных и целое число k . Вопрос в том, существует ли удовлетворительное назначение веса не более k , где назначение - это функция от юниверса до { 0 , 1 } , вес назначения - это число переменных, которым оно присваивает одну, и назначение удовлетворяющий, если для каждого подмножества переменных { x , y , z } присваивание (скажем, f ) имеет свойство, которое:3 К К { 0 , 1 } { х , у, z} е
.е( х ) + ф( у) + f( з) = 0 ( т о д 2 )
Вы можете представить это как 3-SAT с другим понятием удовлетворенности - выберите ни одного или два. Я буду немного небрежен в отношении примера MOEC в том смысле, что я учту, кроме обычных подмножеств, последствия, дизъюнкции длины два и ограничение ( x = 1 ) . Я считаю, что эти простые дополнения сохранят проблему за полиномиальное время.3 ( х = 1 )
Допустим, мы уменьшаем проблему цепочки сложений для числа . Переменная, установленная для этого сокращения, следующая:N
Для каждого переменная N i . Я переписать переменную N п , как N . Для каждой пары i , j такой, что 1 ≤ i , j ≤ k , введите переменные P i j и Q i j .1 ≤ i ≤ n Ni Nn N i,j 1≤i,j≤k Pij Qij
Введем следующие подмножества для каждого такого что k = i + j :i,j,k k=i+j
и следующие последствия:
и P i j ⇒ N jPij⇒Ni Pij⇒Nj
и следующие ограничения:
.(N1=1),(N=1)
Итак, позвольте мне изложить общий способ сказать, учитывая набор переменных:
Это означает, что если переменная, соответствующая узлу, установлена в значение true, то точно один из его дочерних элементов также должен быть установлен в значение true. Теперь добавьте значения:
Эта комбинация ограничений и последствий EVEN-3 эквивалентна ограничению, которое мы хотели закодировать.
источник