Добрый вечер! На самом деле я прохожу стажировку в Национальном архиве Франции и столкнулся с ситуацией, которую хотел решить, используя графики ...
I. Пыльная ситуация
Мы хотим оптимизировать расположение книг моей библиотеки в соответствии с их высотой, чтобы минимизировать стоимость их архива. Высота и толщина книг известны. Мы уже расположили книги в порядке возрастания высоты: (не знаю, было ли это лучше, но ... так мы и сделали). Зная толщину каждой книги, мы можем определить для каждого класса необходимую толщину для их расположения, назовем это (например, книги, которые имеют высоту могут иметь общую толщину ).
Библиотека может изготовить на заказ полки с указанием желаемой длины и высоты (без проблем с глубиной). Полка высотой и длиной стоит , где - фиксированная стоимость, а - стоимость полки на единицу длины.
Обратите внимание, что полка высотой может использоваться для хранения книг высотой с помощью . Мы хотим минимизировать стоимость.
Мой преподаватель предложил мне смоделировать эту проблему как задачу поиска пути. Модель может включать в себя вершин, проиндексированных от до . Мой наставник предложил мне проработать существующие условия, значение каждого ребра и как рассчитать оценку связанную с ребром . Я также буду в порядке с другими решениями, а также идеи.0 n v ( i , j ) ( i , j )
Например, мы имеем для Конвенции (темный период французской истории) такой массив:
II. Предположения стажера книжного червя
Я думаю, что мне нужно вычислить алгоритм между Джикстра, Беллман или Беллман-Калаба ... Я пытаюсь выяснить, какой из них в следующих подразделах.
1.Conditions
Мы находимся здесь с проблемой поиска пути между вершиной и вершиной , должен исходить из (то есть путь (или обход) должен существовать между иn n 0 0 n
2.Что вычислить (обновлено (25.10.2015))
// Работа все еще в процессе, насколько я не знаю, какие вершины и какие ребра моделировать ...
Моя лучшая догадка
Я думаю, что мы избавляемся как минимум от одного типа полок каждый раз, когда находим кратчайший путь из массива, но это только мое предположение ...;).
Я думаю, что лучший способ смоделировать, как покупать полки и хранить наши книги, должен выглядеть следующим образом (но, пожалуйста, не стесняйтесь критиковать мой метод!;))
вершины:
- полки, которые мы можем использовать для хранения наших книг.
- - это состояние, в котором не хранится ни одна книга. Использование этой вершины позволяет мне использовать формулы каждой стоимости (ребра).
ребра: - это стоимость с использованием типа полки. например: от 0 - это стоимость использования только полок типа 1 для хранения наших пергаментов, рукописей ...F 1 + C 1 x 1
Тем не менее, отсюда я не знаю, как создать свою проблему кратчайшего пути.
Действительно, я бы не знал, где бы я сложил все свои книги.
Это приводит меня к другой идее ...
другая идея ...
Здесь я ищу кратчайший путь от данной вершины до состояния 0, то есть, зная, что самый высокий документ имеет высокий, я ищу самый дешевый способ упорядочить свои документы.
вершины:
- полки, которые мы можем использовать для хранения наших книг.
- - это состояние, в котором хранятся все книги. Использование этой вершины позволяет мне использовать формулы каждой стоимости (ребра).
ребра: - это стоимость с использованием типа полки. например: из 3 - это стоимость использования полок после использования полок для хранения наших пергаментов, рукописей ...
Тем не менее, я не знаю, где поставить .
3. Как рассчитать
Я думаю, что мы должны начать с более высоких полок, насколько мы можем хранить меньшие книги ...
Делать
Мы берем см с высотой на полке их высоты + см высоты пока она не станет более дорогой, чем взятие сукно. тогда
Пока я> <0
Наконец, я не знаю, как сделать х изменяющимся ...
То есть, как выбрать, например, поместить документы в или .
источник
Ответы:
Я вижу, что вы спрашиваете: «Я хочу решить эту проблему с помощью алгоритма Дейкстры, но я не могу настроить хороший график для работы», поэтому я представлю вам такой график.
Диграф, где вершинами являются наборы книжных полок.
Итак, у нас есть книги с высотой 1 ≤ n ≤ N и шириной W n , с высотами в порядке возрастания для каждой книги, и мы хотим сгруппировать их по полкам.Hn, 1≤n≤N Wn,
Повторно используйте эти числа для узлов решения где этот узел представляет состояние решения «все книги i ≤ n отложены». Поэтому мы начнем с узла 0 и постараемся добраться до узла N по кратчайшему пути с помощью алгоритма Дейкстры. Эти узлы являются вершинами нашего графа.n, i≤n 0 N
Затем мы рисуем от узла до любого узла j > i направленный край, который предполагает, что все эти промежуточные книги будут откладываться с одной полкой, т.е. длина этого края равна L i j = F j + C j j ∑ n = i + 1 W n , где я предположил, что, когда вы говорите, стоимость суммы была F i + C i x i, индекс i на x i был абсолютно бессмысленным.i j>i
Алгоритм Дейкстры тогда даст нам путь кратчайшей длины к узлуN.
источник
Int
больше чем1
. Это приводит к графуn^2
вершин. Если вы ищете путь между A и B, и все веса ребер положительны, то нет разницы между Дейкстрой и Беллманом-Калабой, за исключением того, что Беллман-Калаба всегда пытается обновить ребра, которые не нуждаются в обновлении; Дейкстра просто хранит указатели на вершины, которые ей небезразличны.Я думаю, что у меня есть решение вашей проблемы. Надеюсь, я не понял что-то неправильно в определении вашей проблемы. Здесь это идет:
Давайте докажем следующие две вещи:
Из двух вещей, которые мы доказали, B является существенным.
И последнее, но не менее важное, как я сказал выше, поскольку книги большие, вы не можете использовать алгоритм для каждой книги. Я думаю, что представление его высоты суммой его толщины должно помочь. (Я думаю, что это уже так из вашего заявления)
(Я предполагаю, что количество различных высот намного меньше, чем количество книг)
источник
Иногда просто «приближение» к «ближайшей проблеме» в литературе может помочь понять теорию и предысторию проблемы, построить абстракцию и устранить ложные детали. Похоже, ближайшая к вам проблема в литературе - это то, что известно как «проблема упаковки бина переменного размера». Образцы документов включены ниже. Эта проблема хорошо изучена теоретически, и существует некоторое готовое программное обеспечение, которое проявляется в оптимизации упаковочных коробок, например, в грузовых транспортных контейнерах. Есть также версии, где можно настроить размер контейнера. Есть много алгоритмических подходов. например, из 1- й статьи:
ОПТИМИЗАЦИЯ ТРЕХМЕРНОЙ УПАКОВКИ В БИН ПО МОДЕЛИРОВАНИЮ / Дуб, Канавати
Проблема упаковки в бункер с неопределенными объемами и емкостью / Пэн, Чжан
Алгоритмы упаковки 3-х бинов , stackoverflow
источник