Проблема з камінкою


10

Галька - це пасьянс, що грається на непрямому графіку , де кожна вершина має нуль або більше камінчиків. Один крок гальки складається з видалення двох камінчиків з вершини та додавання одного камінчика до довільного сусіда . (Очевидно, що вершина v повинна мати щонайменше дві камінчики перед переміщенням.) Проблема PebbleDestruction задає графік та кількість гальки для кожної вершини , чи є послідовність камінних ходів, які видаляють всі, крім одного камінця. Доведіть, що PebbleDestruction завершено NP.GvvG=(V;E)p(v)v

По-перше, я показую, що він знаходиться в NP, оскільки я можу перевірити рішення за поліноміальним часом, відстежуючи кількість гальки лише з однієї гальки.

Далі, які ідеї, які проблеми слід використовувати як основу для скорочення полінома-часу?

Чи буде щось на зразок обкладинки вершин? Або кришка вершини різного розміру?

Якщо так, то як можна обробляти різну кількість камінчиків на кожному ходу?

Дякую тобі.

Від: http://courses.engr.illinois.edu/cs473/sp2011/hw/disc/disc_14.pdf


1
Чи так просто показати, що проблема в НП? Чи не може кількість рухів бути експоненціальною щодо вхідного розміру?
Vinicius dos Santos

@ViniciusSantos, кількість ходів не може бути більшою за кількість камінчиків (що також є частиною введення).

1
Але ми можемо припустити, що кількість камінчиків є в двійковій, правда? У цьому випадку розмір вводу є логарифмічним щодо кількості камінчиків. Я все ще думаю, що існує коротка довідка про проблему, але, наскільки я розумію, список кроків не один.
Vinicius dos Santos

@ViniciusdosSantos, будь ласка, ви не помітили, що весь графік є вхідним, з іншого боку число гальки для кожної вершини (p (v)) має бути обмежене розміром графіка, інакше перевіряйте, чи є послідовність рухів дійсна чи не потребує експоненціальної дії. І я думаю, що правильно вважати, що кількість камінчиків на кожній вершині не більше n.

Я погоджуюся, що якщо кількість камінчиків на кожній вершині поліноміально обмежена розміром графіка, то це тривіально в NP. Але я вважаю, що це припущення не є необхідним, хоча без цього доведення стає складніше.
Vinicius dos Santos

Відповіді:


8

Припустимо, на графіку є одна галька на кожну вершину, за винятком однієї вершини з , тоді над проблемою галька є рішення на має гамільтонів ланцюг. Це легко перевірити, чи є гамільтонів цикл, тобто рішення для pebbling на . З іншого боку, у будь-якому вирішенні камінчика ми повинні починати з вершини . Припустимо, ми відвідуємо деяку вершину двічі, щоб ця була першою вершиною, яка двічі відвідала за допомогою алгоритму камінчиків, тоді у нас є цикл, який починається з і закінчуєтьсяv р ( v ) = 2 G я е е G G V U U G U U U р ( у ) = 1 у = v vGvp(v)=2G iff GGvuuGuuі, нарешті, тому що є першим для створення циклу, тоді у нас тому ми не можемо продовжувати камінчиковий алгоритм. Дійсно, якщо алгоритм має рішення, то у нас є що означає, що ми знайшли гамільтонів ланцюг, який починається в .up(u)=1u=vv

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.