Як вирішити проблему розташування в Національному архіві Франції за допомогою теорії графів?


9

Доброго вечора! Я фактично стажуюсь у Національних архівах Франції, і я зіткнувся з ситуацією, яку хотів вирішити за допомогою графіків ...

I. Пильна ситуація

Ми хочемо оптимізувати розташування книг моєї бібліотеки відповідно до їх висоти, щоб мінімізувати їхню вартість архіву. Висота та товщина книг відомі. Ми вже упорядкували книги у порядку зростанняH1,H2,,Hn(Я не знаю, чи було це найкраще, але ... саме так ми це зробили). Знаючи товщину кожної книги, ми можемо визначити для кожноїHi класифікуйте необхідну товщину для їх розташування, назвіть її Li (наприклад, книги, які є Hi=23cm високий може мати загальну товщину Li=300cm).

Бібліотека може виготовляти на замовлення полки, вказуючи бажану довжину та висоту (без проблем із глибиною). Полиця висотоюHi і довжина xi витрати Fi+Cixi, де Fi є фіксованою вартістю і Ci - вартість полиці на одиницю довжини.

Зверніть увагу, що полиця висотою Hi можна використовувати для зберігання книг висоти Hj з ji. Ми хочемо мінімізувати витрати.

Мій репетитор запропонував розглянути цю проблему як проблему пошуку шляху. Модель може включати в себеn+1 вершини індексованої форми 0 до n. Мій наставник запропонував розробити існуючі умови, кожне означення краю та як опрацювати оцінкуv(i,j) пов'язаний з краєм (i,j). Я також був би в порядку з іншими рішеннями, а також розумінням.

Наприклад, ми маємо для Конвенції (похмурий період французької історії) такий масив:

i1234Hi12cm15cm18cm23cmLi100cm300cm200cm300cmFi1000120011001600Ci5/cm6/cm7/cm9/cm

II. Припущення про стажерського хробака

Я думаю, що мені доведеться обчислити алгоритм між Джикстра, Беллман або Беллман-Калаба ... Я намагаюся з’ясувати, який із наступних підрозділів.

1.Умови

Ми тут з проблемою проходження маршруту між вершинами 0 і вершина n, n повинні бути вихідними з 0 (тобто, шлях (або прогулянка) повинен існувати між ними 0 і n

2.Що обчислити (оновлено (25.10.2015))

// Працюйте ще в процесі, наскільки я не знаю, до яких вершин і які ребра моделювати ...

Моя найкраща здогадка

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

Я думаю, що найкращий спосіб моделювати, як купувати полиці та зберігати наші книги, повинен виглядати наступним графіком (але, будь ласка, не соромтеся критикувати мій метод!;))

від 0 граф

вершини:

  • i[1,4] - це полки, які ми можемо використовувати для зберігання наших книг.
  • 0це стан, в якому не зберігається жодна книга. Використання цієї вершини дозволяє мені використовувати формули (ребра) витрат.

краї: Fi+Cixi,i[1,4]- це вартість з використанням типу полиць. наприклад:F1+C1x1 fom 0 - це вартість, яка використовує лише полиці типу 1 для зберігання наших пергаментів, рукописів ...

Але звідси я не знаю, як створити свою найкоротшу проблему шляху.

Дійсно, я б не знав, де б я зберігав усі свої книги.

Це підводить мене до іншої ідеї ...

інша ідея ...

до 0 графіка

Тут я шукаю найкоротший шлях від заданої вершини до стану 0, тобто, знаючи, що найвищий документ type i високий, я шукаю найдешевший спосіб оформити свої документи.

вершини:

  • i[1,4] - це полки, які ми можемо використовувати для зберігання наших книг.
  • 0це стан, де зберігаються всі книги. Використання цієї вершини дозволяє мені використовувати формули (ребра) витрат.

краї: Fi+Cixi,i[1,4]- це вартість з використанням типу полиць. наприклад:F1+C1x1 від 3 - вартість використання type 1 полки після використання type 3 полки для зберігання наших пергаментів, рукописів ...

Але я не знаю, куди подіти F4+C4x4.

3.Як проводити обчислення

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

Зробіть

Ми беремо Ln см з Hi=n висота в полиці їх висоти + z см an Hi=n1 висота, поки вона не стане дорожчою, ніж брати Hi=n1полиця. тодіi=i1

Поки i> <0

Нарешті, я не знаю, як зробити x різними ...

Тобто, як вибрати, як поставити xi документи в 4 або 3 наприклад.


Скільки там книг? тобто єO(n),O(nlogn) алгоритми єдині, які прийнятні?
jjohn

5
Я не бачу, що це стосується графіків: навіщо змушувати себе робити щось на основі графіків, коли проблема, яка виникає, є чимось на зразок упаковки у бін? Ваша модель не враховує практичності стелажів. Наприклад, стелажна полка має полиці певної довжини: ви можете укладати полиці завдовжки п’ять метрів один на одного, але полицю 99 см, полицю 172 см, полицю 128 см, полицю 83 см та полицю 18 см (загальна довжина 5м) абсолютно марні. І чому на землі коштує 2500 євро, щоб побудувати один метр 23-сантиметровий стелаж? Це не здається реалістично віддаленим. Чи справжня ця бібліотека?
Девід Річербі

3
1. Я не розумію, чому ви змушуєте себе підходити до цього як до проблеми проходження шляху. Якщо ви стикаєтеся з цією ситуацією на практиці, немає сенсу нав'язувати таке зайве обмеження - чому б ви відкидали інші рішення, які вирішують вашу проблему, використовуючи інший підхід? Рекомендую відредагувати питання, щоб видалити цю вимогу. 2. Ви досі не сказали нам, скільки книг існує. Ви можете дати нам номер? Щось більш специфічне, ніж "луо", навіть якщо це лише оцінка на порядок?
DW

1
Здається, ви витратили досить багато думок на свою проблему. Це добре! Однак зберігання повної історії ваших думок в одному питанні робить це досить непростим. SE працює набагато краще, якщо ви опублікуєте єдине цілеспрямоване запитання та достатньо простого досвіду, щоб питання було відповідальним.
Рафаель

1
Щодо "мені потрібно висловити це як проблему з графіком" - це ... німа вимога. Якщо проблема в P, запишіть її як LP та обчисліть еквівалентний екземпляр max-потоку. Вуаля. Якщо він знаходиться в NP, але ви не знаєте, що це буде в P, запишіть його як IP та перетворіть на будь-яку проблему з графіком, повним NP. Вуаля.
Рафаель

Відповіді:


5

Я бачу, як ви запитуєте: "Я хочу вирішити це за допомогою алгоритму Діккстри, але я не можу створити хороший графік для роботи", тому я представлю вам такий графік.

Діграф, де вершини - це сукупність книг, що зберігаються.

Гаразд, у нас книги з висотою Hn, 1nN і ширини Wn, з висотами у порядку зростання для кожної книги, і ми хочемо згрупувати їх по поличках.

Використовуйте ці числа для вузлів рішення n, де цей вузол являє собою стан рішення "всіх книг in були відкладені ". Тому ми почнемо з вузла 0 і прагнути дістатися до вузла Nпо найкоротшому шляху з алгоритмом Дійкстри. Ці вузли є вершинами нашого графіка.

Потім малюємо з вузла i до будь-якого вузла j>i спрямований край, який передбачає, що всі ці посередницькі книги будуть покладені однією поличкою, тобто довжина цього краю

Lij=Fj+Cj n=i+1jWn,
де я припустив, що, коли ви говорили, вартість суми була Fi+Cixi підпис i на xi була абсолютно безглуздою.

Алгоритм Дейкстри дасть нам найменший шлях до вузла N.


@Christ Drost, thaaaaaaaaanks, багато! Потрібен час, щоб зрозуміти, що ти намагався створити без будь-якого графіка, але саме це я шукав! Я читаю ваш дивовижний профіль, він відповідає вашій відповіді ха-ха;)!
Революція для Моніки

Мені було цікаво, чи Беллман-Калаба не був більш підходящим, ніж Джикстра, єдина потреба - не мати будь-якого цитруса (а у нас цього немає)
Революція для Моніки

І це алгоритм, який також визначає довжину ребер. "вузол n являє собою рішення, вказуючи, що" всі книги i≤n були збережені "." Ми не можемо також повернутися назад із тим, що ви надали.
Революція для Моніки

Я не впевнений, що означає "повернення назад", але якби ви хотіли "повернутися назад", вам, мабуть, доведеться розглянути більш складний графік, де вузол - це список "кількості книг, що зберігаються на цій полиці" Intбільше, ніж 1. Це призводить до графіку n^2вершин. Коли ви шукаєте шлях між A і B і всі ваги краю є позитивними, то між Dijkstra і Bellman-Kalaba немає різниці, за винятком того, що Bellman-Kalaba завжди намагається оновити краї, які не потребують оновлення; Дайкстра просто зберігає покажчики на вершини, які його хвилюють.
CR Drost

7

Я думаю, що у мене є рішення вашої проблеми. Сподіваюся, я щось неправильно не зрозумів у визначенні вашої проблеми. Ось це іде:

Я опишу підхід до динамічного програмування. Це єO(n2) алгоритм, а це означає, що оскільки кількість книг величезна, то вам не дуже допоможуть. (вам потрібно його трохи змінити!). За допомогою деякої роботи ви можете перетворити зазначений підхід на динамічне програмування в екземпляр пошуку найкоротшого шляху на спрямованому ациклічному графіку. (Який сам алгоритм динамічного програмування: P)

Припустимо, є n книги різної висоти.

Припустимо також, що оптимальна вартість досягається присвоюванням книг i полиці висоти h1,h2,...,hi де h1<h2<...<hi.

Докажемо наступні дві речі:

A. Ca>Ca1

Припустимо, навпаки. ДозволяєBa1 бути набором книг, призначених на полиці a1 Тоді cost=other,stuff+Ca1thickness(Ba1)

Оскільки ми вважали, Ca<Ca1, перенесемо всі книги на полиці a1 до a (що можливо з тих пір ha1<ha.

Так що тепер, cost=other,stuff+Cathickness(Ba)що нижче, ніж раніше. Отже, ми маємо протиріччя через оптимальності, яку ми припускали.

Тому Ca>Ca1 для всіх створених полиць

Б. Нехай j бути книгою, яка призначена на полицю a. Доведемо цеheight(j)>ha1

Це досить легко. Якщоheight(j) було менше, ніж ha1 ми могли б поставити книгу на полицю a1 за кращу вартість (за рахунок А).

З двох речей, які ми довели, B є важливим.

Дозволяє dp[a]= оптимальна вартість зберігання книг 1...a щоб там була полиця height(a). Ви повинні знайти спосіб визначенняdp[a] за значеннями dp[1],dp[2],....dp[a1]

Я тут зупинюсь. Якщо ви знайомі з динамічним програмуванням, використовуючи факт B, ви легко придумаєте повторення. Інакше запитайте :). Як я вже говорив, це може перетворитися на проблему DAG. Знаючи відношення вище, легко зрозуміти, що таке край(a,b) означає і визначити його вартість.

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

(Я здогадуюсь, кількість різних висот набагато менша, ніж кількість книг)



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

По-друге, я думаю, що є помилка друку, коли ви говорили за висновок А. Частини Ca<Ca1навпаки, чи не так?
Революція для Моніки

@ Marine1 Так. Ти правий. Це друкарня! Скоро це виправить. Тепер про інше питання. Припустимо, у вас є оптимальний алгоритм (тобто той, який дає найкращі витрати). Якщо існує поличкаa в ньому таке, що Ca>Ca+1 тоді ми могли перенести всі книги з полиці a на полицю a+1 і не створюють полиці a. Тоді ви закінчите з меншими витратами (адже а. Товщина на товщину була б меншою і б. Вам не знадобилася б)Fa). Але в нашому припущенні у нас вже є оптимальний алгоритм, тому це не може бути виконано. Я сподіваюся, що це робить вас дещо зрозумілішим!
jjohn

0

Іноді просто "збільшення масштабу" на "найближчу проблему" в літературі може допомогти зрозуміти теорію та передумови проблеми, побудувати абстракцію та усунути помилкові деталі. Найближчою до вашої літератури проблемою здається те, що відомо як "проблема упаковки у контейнери для змінних розмірів". Зразки паперів наведені нижче. Ця проблема є теоретично вивченою, і існує певне програмне забезпечення, яке з'являється в оптимізації пакувальних коробок, наприклад, до вантажних контейнерів. Існують також версії, де можна регулювати розмір контейнера. Існує багато алгоритмічних підходів. наприклад, з 1- го паперу:

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

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