Розглянемо наступне алгоритмічне завдання:
Вхідне значення: додатне ціле число , поряд з його простим множним фактором.
Знайдіть: додатні цілі числа x , y , z, що мінімізують x y + y z + x z , за умови обмеження, що x y z = n
У чому полягає складність цієї проблеми? Чи існує алгоритм поліноміального часу? Це NP-важко?
Ця проблема в основному задає питання: з усіх прямокутних твердих тіл, об'єм яких і розміри яких цілі числа, у якого найменша площа поверхні?
Цю проблему поставив Дан Мейєр під назвою "Проблема математики, яку не могли вирішити 1000 вчителів математики" . Поки жоден з викладачів математики, з яким він працював, не знайшов розумного алгоритму цієї проблеми. У його контексті визначення поняття "розумне" є дещо неточним, але, як інформатики, ми можемо поставити більш точне запитання про складність цієї проблеми.
Очевидний підхід - перерахувати всі можливості для , але це вимагає експоненціального часу. Коментатори в блозі Дена Мейєра запропонували багато ефективних алгоритмів кандидатів, які, на жаль, виявилися невірними. Мартін Строс припускає, що ця проблема здається неяскравою, що нагадує 3-х розділ , але я не бачу зменшення.
Дозвольте мені також прояснити деякі помилки, які я бачив у коментарях / відповідях:
Ви не можете зменшити з 3-х розділів, просто замінивши кожне число його потужністю 2 q , оскільки цільові функції двох завдань різні. Очевидне зменшення просто не працює.
Неправда, що оптимальне рішення передбачає вибір одного з для найближчого дільника від n до 3 √ . Я бачу багато людей, які припускають, що це так, але насправді це не правильно. Це вже було спростовано у публікації блогу Dan Meyer. Наприклад, розглянемоn=68; 3 √і 4 ділить 68, так що ви можете подумати, що принаймні один зx,y,zповинен бути 4; однак це невірно. Оптимальний розв’язок -x=2,y=2,z=17. Інший контрприклад -n=222,3 √, але оптимальним рішенням єx=37,y=3,z=2. (Можливо,правда, що для всіхnоптимальне рішення передбачає, що принаймні один зx,y,zдорівнює або найменшому дільнику наn,більший за3 √ абонайбільший дільник наnменше3 √ - Я зараз не маю контрприкладу - але якщо ви вважаєте, що це твердження є правдивим, йому знадобиться доказ. Ви абсолютно не можете припустити, що це правда.)
"Зробити бути однаковим розміром", мабуть, не обов'язково дає оптимальну відповідь у всіх випадках; дивіться в блозі Ден Меєра про зустрічніприклади. Або, принаймні, для деяких розумних тлумачень фрази "зробіть їх приблизно однакового розміру" існують контрприклади, що показують, що ця стратегія насправді не є оптимальною. Якщо ви хочете спробувати якусь стратегію такого типу, переконайтесь, що ви заявляєте претензію точно, а потім надайте ретельний математичний доказ.
Час роботи не є многочленом. Щоб ця проблема була в P, час роботи повинен бути многочленом довжини вводу . Довжина вводу - щось на зразок lg n , а не n . Очевидний алгоритм грубої сили може бути зроблений для запуску через O ( n 3 ) або O ( n 2 ) , але це експоненціально в lg n і, таким чином, вважається алгоритмом експоненціального часу. Таким чином, це не корисно.