Как решить проблему размещения в Национальном архиве Франции с помощью теории графов?

9

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

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

Мы хотим оптимизировать расположение книг моей библиотеки в соответствии с их высотой, чтобы минимизировать стоимость их архива. Высота и толщина книг известны. Мы уже расположили книги в порядке возрастания высоты: (не знаю, было ли это лучше, но ... так мы и сделали). Зная толщину каждой книги, мы можем определить для каждого класса необходимую толщину для их расположения, назовем это (например, книги, которые имеют высоту могут иметь общую толщину ).H1,H2,,HnHiLiHi=23cmLi=300cm

Библиотека может изготовить на заказ полки с указанием желаемой длины и высоты (без проблем с глубиной). Полка высотой и длиной стоит , где - фиксированная стоимость, а - стоимость полки на единицу длины.HixiFi+CixяFяCя

Обратите внимание, что полка высотой может использоваться для хранения книг высотой с помощью . Мы хотим минимизировать стоимость.HяЧАСJJя

Мой преподаватель предложил мне смоделировать эту проблему как задачу поиска пути. Модель может включать в себя вершин, проиндексированных от до . Мой наставник предложил мне проработать существующие условия, значение каждого ребра и как рассчитать оценку связанную с ребром . Я также буду в порядке с другими решениями, а также идеи.0 n v ( i , j ) ( i , j )N+10Nv(i,j)(i,j)

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

i1234Hi12cm15cm18cm23cmLi100cm300cm200cm300cmFi1000120011001600Ci5/cm6/cm7/cm9/cm

II. Предположения стажера книжного червя

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

1.Conditions

Мы находимся здесь с проблемой поиска пути между вершиной и вершиной , должен исходить из (то есть путь (или обход) должен существовать между иn n 0 0 n0nn00n

2.Что вычислить (обновлено (25.10.2015))

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

Моя лучшая догадка

Я думаю, что мы избавляемся как минимум от одного типа полок каждый раз, когда находим кратчайший путь из массива, но это только мое предположение ...;).

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

от 0 граф

вершины:

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

ребра: - это стоимость с использованием типа полки. например: от 0 - это стоимость использования только полок типа 1 для хранения наших пергаментов, рукописей ...F 1 + C 1 x 1Fi+Cixi,i[1,4]F1+C1x1

Тем не менее, отсюда я не знаю, как создать свою проблему кратчайшего пути.

Действительно, я бы не знал, где бы я сложил все свои книги.

Это приводит меня к другой идее ...

другая идея ...

до 0 граф

Здесь я ищу кратчайший путь от данной вершины до состояния 0, то есть, зная, что самый высокий документ имеет высокий, я ищу самый дешевый способ упорядочить свои документы.type i

вершины:

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

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

Тем не менее, я не знаю, где поставить .F4+C4x4

3. Как рассчитать

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

Делать

Мы берем см с высотой на полке их высоты + см высоты пока она не станет более дорогой, чем взятие сукно. тогдаLnHi=nzHi=n1Hi=n1i=i1

Пока я> <0

Наконец, я не знаю, как сделать х изменяющимся ...

То есть, как выбрать, например, поместить документы в или .xi43

Революция для Моники
источник
Сколько здесь книг? то есть являются алгоритмы единственно приемлемыми? O(n),O(nlogn)
Джон
5
Я не вижу, что это имеет отношение к графам: зачем заставлять себя делать что-то на основе графов, когда проблема под рукой - что-то вроде упаковки в мусорное ведро? Ваша модель не учитывает практичность стеллажей. Например, стеллаж имеет полки определенной длины: вы можете сложить пять метровых полок друг на друга, но полки 99 см, полка 172 см, полка 128 см, полка 83 см и полка 18 см (общая длина 5м) совершенно бесполезны. И с какой стати это стоит 2500 евро на строительство одного метра стеллажа высотой 23 см? Это не кажется отдаленно реалистичным. Эта библиотека настоящая?
Дэвид Ричерби
3
1. Я не понимаю, почему вы заставляете себя подходить к этому как к поиску пути. Если вы сталкиваетесь с такой ситуацией на практике, нет смысла навязывать такое ненужное ограничение - зачем отказываться от других решений, которые решают вашу проблему, используя другой подход? Я рекомендую вам отредактировать вопрос, чтобы убрать это требование. 2. Вы все еще не сказали нам, сколько книг. Можете ли вы дать нам номер? Что-то более конкретное, чем "loooot", даже если это только оценка по порядку величины?
DW
1
Кажется, вы потратили немало мыслей на свою проблему. Это хорошо! Однако хранение полной истории ваших мыслей в одном вопросе делает его довольно громоздким. SE работает намного лучше, если вы разместите один, сфокусированный вопрос и достаточно информации, чтобы сделать вопрос ответственным.
Рафаэль
1
Относительно «мне нужно выразить это как проблему графа» - это ... глупое требование. Если проблема в P, запишите его как LP и вычислите эквивалентный экземпляр максимального потока. Вуаля. Если он в NP, но вы не знаете, что он в P, запишите его как IP и преобразуйте в любую проблему с NP-полным графом. Вуаля.
Рафаэль

Ответы:

5

Я вижу, что вы спрашиваете: «Я хочу решить эту проблему с помощью алгоритма Дейкстры, но я не могу настроить хороший график для работы», поэтому я представлю вам такой график.

Диграф, где вершинами являются наборы книжных полок.

Итак, у нас есть книги с высотой 1 n N и шириной W n , с высотами в порядке возрастания для каждой книги, и мы хотим сгруппировать их по полкам.Hn, 1nNWn,

Повторно используйте эти числа для узлов решения где этот узел представляет состояние решения «все книги i n отложены». Поэтому мы начнем с узла 0 и постараемся добраться до узла N по кратчайшему пути с помощью алгоритма Дейкстры. Эти узлы являются вершинами нашего графа.n,in0N

Затем мы рисуем от узла до любого узла j > i направленный край, который предполагает, что все эти промежуточные книги будут откладываться с одной полкой, т.е. длина этого края равна L i j = F j + C j j n = i + 1 W n , где я предположил, что, когда вы говорите, стоимость суммы была F i + C i x i, индекс i на x i был абсолютно бессмысленным.ij>i

Lij=Fj+Cj n=i+1jWn,
Fi+Cixiixi

Алгоритм Дейкстры тогда даст нам путь кратчайшей длины к узлу N.

ЧР Дрост
источник
@ Крист Дрост, thaaaaaaaaanks, много! Потребовалось время, чтобы понять, что вы пытались создать без какого-либо графика, но это было именно то, что я искал! Я прочитал ваш удивительный профиль, он соответствует вашему ответу, ха-ха;)!
Революция для Моники
Мне было интересно, не был ли Беллман-Калаба более подходящим, чем Джикстра, единственная потребность не в том, чтобы есть какой-нибудь цикрут (а у нас его нет)
Revolucion для Моники
И это алгоритм, который также определенно определяет длину ребер. «узел n представляет собой решение о том, что« все книги i≤n отложены ».« Мы не можем вернуться назад к тому, что вы предоставили.
Революция для Моники
Я не уверен, что означает «идти назад», но если вы хотите «вернуться назад», вам, вероятно, придется рассмотреть более сложный график, где узел представляет собой список «количества книг, отложенных этой полкой», Intбольше чем 1. Это приводит к графу n^2вершин. Если вы ищете путь между A и B, и все веса ребер положительны, то нет разницы между Дейкстрой и Беллманом-Калабой, за исключением того, что Беллман-Калаба всегда пытается обновить ребра, которые не нуждаются в обновлении; Дейкстра просто хранит указатели на вершины, которые ей небезразличны.
CR Drost
7

Я думаю, что у меня есть решение вашей проблемы. Надеюсь, я не понял что-то неправильно в определении вашей проблемы. Здесь это идет:

O(n2)

n

ih1,h2,...,hih1<h2<...<hi

Давайте докажем следующие две вещи:

Ca>Ca1

Ba1a1cost=other,stuff+Ca1thickness(Ba1)

Ca<Ca1a1aha1<ha

cost=other,stuff+Cathickness(Ba)

Ca>Ca1

jaheight(j)>ha1

height(j)ha1a1

Из двух вещей, которые мы доказали, B является существенным.

dp[a]1...aheight(a)dp[a]dp[1],dp[2],....dp[a1]

(a,b)

И последнее, но не менее важное, как я сказал выше, поскольку книги большие, вы не можете использовать алгоритм для каждой книги. Я думаю, что представление его высоты суммой его толщины должно помочь. (Я думаю, что это уже так из вашего заявления)

(Я предполагаю, что количество различных высот намного меньше, чем количество книг)


jjohn
источник
спасибо за эту солидную помощь! Сначала у меня был вопрос к части А: почему у нас есть противоречие из-за проблемы оптимальности? Я понимаю это логично, что более низкая стоимость при хранении книг меньшей высоты на более высоких полках противоречива, но какую оптимальность мы предполагаем? (Это может быть потому, что я занимаюсь динамическим программированием только в следующем семестре ...?)
Revolucion для Моники
Ca<Ca1
aCa>Ca+1aa+1aFa
Jjohn
0

Иногда просто «приближение» к «ближайшей проблеме» в литературе может помочь понять теорию и предысторию проблемы, построить абстракцию и устранить ложные детали. Похоже, ближайшая к вам проблема в литературе - это то, что известно как «проблема упаковки бина переменного размера». Образцы документов включены ниже. Эта проблема хорошо изучена теоретически, и существует некоторое готовое программное обеспечение, которое проявляется в оптимизации упаковочных коробок, например, в грузовых транспортных контейнерах. Есть также версии, где можно настроить размер контейнера. Есть много алгоритмических подходов. например, из 1- й статьи:

Проблема, рассматриваемая в этой статье, заключается в том, что данный набор элементов прямоугольной формы ортогонально упаковывается в минимальное количество трехмерных прямоугольных контейнеров.

ВЗН
источник