РЕДАКТУЙТЕ: відповідь НЕправильна. Я зробив (дурне) неявне припущення, що коли потік шляху починається в момент s і закінчується в момент t і проходить через край e, він блокує край e на цю тривалість. Однак це неправда. Побачити *.
Примітка: Можливо, такий підхід є зайвим складним або неправильним. Хоча я намагався це перевірити і ретельно записувати - я не витрачав на це величезної кількості часу.
Якщо припустити, що «запаси» не дозволяються, наприклад, потік потрібно негайно перенести. Нехай позначає кількість ребер і N довжину введення. Я не вказував постійний чи дискретний час, оскільки не брав його до уваги. Це повинно працювати для дискретної думки, для постійного, я впевнений.mN
Тоді ми можемо описати рішення як набір "шляхів-потоків" від джерела до раковини. Шлях-потік - це чотиричлен який складається з наступного: Простий шлях P від джерела до потоку; Час початку шляху-потоку s ; Кількість потоку через шлях a ; Пропускна здатність r .(P,s,a,r)Psar
Нехай рішення задається безліччю шляхових потоків. Ми можемо перевірити, чи правильне рішення, задане цими потоками шляху, правильним за тимчасовим поліном у | Ж | і N :F|F|N
- Для кожного краю та моменту часу t , складіть швидкість пропускної здатності всіх потоків шляху, що йдуть через e, в момент t . Кожен потік шляху має початок і кінець часу, тому нам потрібно лише враховувати моменти часу, коли потік шляху починається або закінчується (між цими моментами нічого не змінюється щодо потоків шляху, що йдуть через край e .etete
- Для кожного шляху-потік , ми можемо перевірити , чи надходить все це потік в раковині до того часу .T
- Для кожного краю ми можемо перевірити, чи проходить потік шляху після його знищення чи ні.
- Нижню межу потоку ми можемо просто перевірити, додавши кількість потоку потоків потоків.B
Тепер ми «просто» потрібно показати , що число шлях-потоків є многочленом .N
Для даного рішення ми можемо визначити час, коли деякий потік пройшов край і коли край був зруйнований. Перетворіть це на проблему з рівноцінним рішенням: на кожному краї є жорсткі межі, коли його можна використовувати, а коли ні - час початку та закінчення. Нехай позначають множину всіх цих часів.{t1,...,tk}
Розглянемо якесь некомплектне рішення та (спочатку) порожній набір потоків. Ідея полягає в тому, що ми ітераційно знаходимо шлях-потік у не компактному рішенні, видаляємо його і зберігаємо в нашому наборі потоків.
Знайдіть потоки шляху, які починаються і закінчуються між і t j , i < j, але не закінчуються між будь-якими t p і t q такими, що [ t p , t q ] ⊆ [ t i , t j ] . Нехай F i , j позначає набір потоків шляху між t j і t j із властивостями, як описано вище.titji<jtptq[tp,tq]⊆[ti,tj]Fi,jtjtj
Припустимо, що ми вже видалили всі потоки шляху для всіх менших інтервалів, ніж . Жадібно знайдіть потоки шляхів, які починаються та закінчуються в [ t i , t j ] . Коли ми знайдемо його, видаліть цей потік з розчину і відповідно відрегулюйте пропускну здатність вершин, а також кількість потоку, що надсилається з джерела, щоб також потонути. Для цього потоку шляху ми максимізуємо пропускну здатність. Це означає, що принаймні для одного краю ми досягли максимальної швидкості пропускання або після видалення цього потоку шляху більше немає потоку через цей край. Зауважте, що це справедливо для періоду [ t i + 1 , t j[i,j][ti,tj]. В обох випадках більше цього потоку не проходить через цей край, і ми можемо зробити висновок, що | F s , t | ≤м.[ti+1,tj−1]|Fs,t|≤m
(*) Чому попередня претензія відповідає дійсності? Ну а кожен інший потік шляху в починається до t i + 1 і закінчується після t j - 1 . Тому повинні вчасно перекриватися, щоб вони використовували певний край. Оскільки пропускна здатність максимізована для тракту-потоку, там повинен бути край, де він щільний.Fti,tjti+1tj−1
∑i,j∈[k]|Fi,j|≤cm3c