Як ефективно визначити, чи дійсна дана драбина?


28

У моєму місцевому сквеш-клубі є драбина, яка працює наступним чином.

  1. На початку сезону ми будуємо таблицю з іменем кожного члена клубу на окремому рядку.
  2. Потім ми записуємо кількість виграних ігор та кількість ігор, що граються поруч із кожним іменем (у формі: перемоги гравця / ігри).

Таким чином, на початку сезону стіл виглядає приблизно так:

Carol 0/0
Billy 0/0
Alice 0/0
Daffyd 0/0

Будь-який два гравці можуть зіграти матч, причому один гравець виграє. Якщо гравець, що знаходиться найближче до нижньої частини таблиці, виграє, то положення гравців змінюється. Потім повторюємо крок 2., оновлюючи кількість виграшів та ігор поруч із кожним гравцем. Наприклад, якщо Еліса б’є Біллі, у нас є

Carol 0/0
Alice 1/1
Billy 0/1
Daffyd 0/0

Ці поєдинки тривають протягом усього сезону і в підсумку призводять до того, що гравці будуть перераховані приблизно в сильному порядку.

На жаль, оновлення відбувається досить випадково, тому допускаються помилки. Нижче наведено декілька прикладів недійсних таблиць, тобто таблиць, які неможливо було скласти, правильно виконавши наведені вище кроки для деякого початкового порядку (ми забули порядок, який ми використовували на початку сезону) та послідовність збігів та результатів:

Alice 0/1
Billy 1/1
Carol 0/1
Daffyd 0/0

Alice 2/3
Billy 0/1
Carol 0/0
Daffyd 0/0

Alice 1/1
Billy 0/2
Carol 2/2
Daffyd 0/1

Надавши таблицю, як можна ефективно визначити, чи справедлива вона? Ми можемо почати, зазначивши наступне:

  1. Порядок імен не має значення, оскільки ми забули початковий початковий порядок.

  2. Загальна кількість виграшів повинна бути половиною суми від кількості зіграних ігор. (Це показує, що перший приклад вище недійсний.)

  3. Припустимо, таблиця дійсна. Потім з'являється мультиграф - графік, що містить кілька ребер, але без циклів - з кожною вершиною, що відповідає гравцеві, а кожен край грає в матчі. Тоді загальна кількість ігор кожного гравця відповідає ступеню вершини гравця в мультиграфі. Отже, якщо немає мультиграфа з відповідними вершинними градусами, то таблиця повинна бути недійсною. Наприклад, не існує мультиграфа з однією вершиною ступеня першого і однією з третього ступеня, тому другий приклад є недійсним. [Ми можемо ефективно перевірити наявність такого мультиграфа.]

Таким чином, у нас є дві перевірки, з яких можна застосувати, для початку, але це все ще дозволяє недійсні таблиці, наприклад, третій приклад. Щоб побачити, що ця таблиця є недійсною, ми можемо працювати назад, вичерпуючи всі можливі способи виникнення таблиці.

Мені було цікаво, чи може хтось придумати поліноміальний час (за кількістю гравців та кількістю ігор) алгоритм вирішення цієї проблеми рішення?


2
Можливо, існує теорема типу Гавела Хакімі для спрямованих мультиграфій ...
Аріябхата

Чому третій приклад не може бути можливим? Що робити, якщо Аліса перемогла над Боб, Керрол перемогла над Боб, а Керрол перемогла над Даффідом. Тоді Аліса виграла 1 з 1 ігор, Боб виграв 0 з 2 ігор, Керрол виграв 2 з 2 гри, а Даффід виграв 0 з 1 гри?
відверто

виразний: Після кожної гри, якщо виграє нижчий гравець, гравці переключаються. Щоб показати, що третій приклад можливий, вам потрібно буде надати стартову конфігурацію та послідовність ігор - тобто з наказом - у результаті чого дається таблиця.
Бен

aryabhata: Дякую - так, це був би корисний крок. На жаль, це звучить досить важко ...
Бен,

1
пропозиція вивчити / вирішити це. вказати це як проблему SAT. то спробуйте багато випадкових випадків. подивіться, чи є якісь важкі для стандартного рішення. якщо ні, можливо, це обмежене підмножина в P.
vzn

Відповіді:


1

Це не повна відповідь. Я даю простішу постановку проблеми та деякі зауваження.

Почнемо з графіка, де вершини позначені .[n]

Ми маємо операцію, яка додає в графі спрямований край від до , і якщо перемикає їх мітки.vulabel(v)<label(u)

Давши спрямований багато графік з вершинами та краями, перевірте, чи можна його отримати, використовуючи вищеописану операцію.Gne

Легко бачити , що проблема полягає в : сертифікат є (поліном розміру) послідовність операцій , що призводять до .NPG

Спостереження

Здається, що ми можемо без втрати загальності припустити, що всі краї до останньої вершини додаються в кінці послідовності, а всі ребра з неї додаються на початку послідовності. Це можна узагальнити до інших вершин. Припустимо, що ми видалимо всі вершини з мітками, більшими за . Усі ребра до додаються в кінці послідовності, а всі ребра з додаються на початку послідовності.label(v)vv

Я думаю, що слід поєднати це спостереження з Гавелом-Хакімі, щоб дати алгоритм багаточленного часу.


Привіт. Дякую. Чи проти зауважити, що ваше спостереження ще раз висловлюється у контексті сходів? Я думаю, що існує графік контрприкладу для графа порядку 3, але, можливо, я неправильно прочитав.
Бен

@Ben, я думаю, що це було б так: ви можете припустити, що останній чоловік на сходах грав усі ігри, які він виграв на старті турніру і грав усі ігри, які він програв наприкінці турніру . Дайте мені знати, чи є зустрічний приклад цьому, я не ретельно перевіряв це.
Каве

На жаль, є такі сходи: A 2/2 B 0/1 C 0/1
Ben

@Ben, я думаю, що приклад узгоджується з тим, що я написав, тобто це не протилежний приклад спостереження.
Каве

Драбина дійсна. Припустимо, що остання зіграна гра була втратою для C. Тоді перед останньою грою драбина повинна була виглядати так: C 0/0 B 0/1 A 1/1, але ця драбина недійсна. Отже, ми не можемо припустити, що остання гра була втратою для C.
Бен

0

Я не вирішив проблему, але маю часткові результати, заяви про які наведено нижче. Я напишу докази, якщо хтось зацікавиться.

Пропозиція . Припустимо, що на сходах (1) міститься більше, ніж один гравець (2) містить рівну кількість виграшів та програшів; і (3) є таким, що кожен гравець виграв принаймні одну гру та програв хоча б одну гру. Тоді драбина діє.

Нехай - кількість виграшів гравця , - кількість втрат гравця а - ранг (де вище краще).WiiLiiRi

Пропозиція (завдяки Фабіо Паризі) . Якщо і драбина дійсна, то та відповідна межа справедливо для у випадку, коли .W ik : R k > R i , W k > 0 ( L k - 1 ) + + k : R k < R i L k , L i W i = 0Li=0

Wik:Rk>Ri,Wk>0(Lk1)++k:Rk<RiLk,
LiWi=0
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.