Jak rozwiązać problem aranżacyjny w Archive Nationale of France przy użyciu teorii grafów?

9

Dobry wieczór! Właśnie odbywam staż w Archives Nationales of France i napotkałem sytuację, którą chciałem rozwiązać za pomocą wykresów ...

I. Zakurzona sytuacja

Chcemy zoptymalizować rozmieszczenie książek w mojej bibliotece zgodnie z ich wysokością, aby zminimalizować koszty archiwizacji. Wysokość i grubość książek są znane. Książki ułożyliśmy już w porządku rosnącymH1,H2,,Hn(Nie wiem, czy to była najlepsza rzecz, ale ... tak to zrobiliśmy). Znając grubość każdej książki, możemy określić dla każdej z nichHi określ wymaganą grubość do ich ułożenia, nazwij to Li (na przykład, które są Hi=23cm wysoki może mieć całkowitą grubość Li=300cm).

Biblioteka może produkować niestandardowe półki, wskazując pożądaną długość i wysokość (bez problemu z głębokością). Półka wysokościHi i długość xi koszty Fi+Cixi, gdzie Fi jest kosztem stałym i Ci to koszt półki na jednostkę długości.

Pamiętaj, że półka wysokości Hi może służyć do przechowywania książek wysokości Hj z ji. Chcemy zminimalizować koszty.

Mój nauczyciel zasugerował, że modeluję ten problem jako problem ze znalezieniem ścieżki. Model może obejmowaćn+1 forma indeksowana wierzchołków 0 do n. Mój mentor zasugerował, że opracowałem istniejące warunki, znaczenie każdej krawędzi i jak opracować wycenęv(i,j) związane z krawędzią (i,j). Byłbym również w porządku z innymi rozwiązaniami, a także ze spostrzeżeniami.

Na przykład mamy dla konwencji (mroczny okres historii Francji) taką tablicę:

ja12)3)4H.ja12dom15dom18dom23domL.ja100dom300dom200dom300domfaja1000120011001600doja5/dom6/dom7/dom9/dom

II. Założenia mola szkoleniowego praktykanta

Myślę, że muszę obliczyć algorytm między Djikstrą, Bellmanem lub Bellmanem-Kalabą ... Próbuję dowiedzieć się, który z nich w poniższych podrozdziałach.

1. Warunki

Jesteśmy tutaj z problemem wyszukiwania ścieżki między wierzchołkiem 0 i wierzchołek n, n musi pochodzić z 0 (to znaczy między ścieżką musi istnieć ścieżka (lub spacer) 0 i n

2.Co obliczyć (zaktualizowano (25/10/2015))

// Nadal pracuję, o ile nie wiem, które wierzchołki i które krawędzie modelować ...

Moje najlepsze przypuszczenie

Myślę, że pozbywamy się co najmniej jednego rodzaju półek za każdym razem, gdy znajdziemy najkrótszą ścieżkę z tablicy, ale to tylko moje założenie ...;).

Myślę, że najlepszy sposób modelowania sposobu kupowania półek i przechowywania naszych książek musi wyglądać jak na poniższym wykresie (ale proszę, nie wahaj się krytykować mojej metody!;))

od 0 wykresu

wierzchołki:

  • i[1,4] to półki, których możemy użyć do przechowywania naszych książek.
  • 0jest stanem, w którym żadna książka nie jest przechowywana. Korzystanie z tego wierzchołka pozwala mi używać każdej formuły kosztu (krawędzi).

krawędzie: Fi+Cixi,i[1,4]są kosztami przy użyciu rodzaju półki. na przykład:F1+C1x1 fom 0 to koszt używania tylko półek typu 1 do przechowywania naszych pergaminów, rękopisów ...

Jednak stąd nie wiem, jak stworzyć mój najkrótszy problem.

Rzeczywiście, nie wiedziałbym, gdzie schowałbym wszystkie moje książki.

To prowadzi mnie do innego pomysłu ...

inny pomysł...

do 0 wykresów

Tutaj szukam najkrótszej ścieżki od danego wierzchołka do stanu 0, czyli wiedząc, że najwyższy dokument to type i wysoki, szukam najtańszego sposobu na uporządkowanie dokumentów.

wierzchołki:

  • i[1,4] to półki, których możemy użyć do przechowywania naszych książek.
  • 0to stan, w którym przechowywane są wszystkie książki. Korzystanie z tego wierzchołka pozwala mi używać każdej formuły kosztu (krawędzi).

krawędzie: Fi+Cixi,i[1,4]są kosztami przy użyciu rodzaju półki. na przykład:F1+C1x1 od 3 to koszt użycia type 1 półki po użyciu type 3 półki do przechowywania naszych pergaminów, rękopisów ...

Nie wiem jednak, gdzie umieścić F4+C4x4.

3.Jak obliczyć

Myślę, że musimy zacząć od wyższych półek, o ile możemy następnie przechowywać mniejsze książki ...

Zrobić

Bierzemy Ln cm z Hi=n wysokość w półce o ich wysokości + z cm Hi=n1 wysokość, aż stanie się droższy niż biorąc Hi=n1odłożyć na półkę. następniei=i1

Podczas gdy i> <0

Wreszcie, nie wiem, jak różnicować x ...

To znaczy, jak wybrać xi dokumenty w 4 lub 3 na przykład.

Revolucion for Monica
źródło
Ile jest tam książek? tj. sąO(n),O(nlogn) algorytmy jedyne, które są dopuszczalne?
jjohn
5
Nie rozumiem, co to ma wspólnego z grafami: po co zmusić się do zrobienia czegoś opartego na grafie, skoro problem jest podobny do pakowania bin? Twój model nie bierze pod uwagę praktyczności półek. Na przykład regał ma półki o określonej długości: można ułożyć na sobie półki o długości pięciu metrów, ale półkę 99 cm, półkę 172 cm, półkę 128 cm, półkę 83 cm i półkę 18 cm (długość całkowita 5m) są całkowicie bezużyteczne. A dlaczego, u licha, budowa jednego półki regałów o wysokości 23 cm kosztuje 2500 EUR? To nie wydaje się zbyt realistyczne. Czy ta biblioteka jest prawdziwa?
David Richerby
3
1. Nie rozumiem, dlaczego zmuszasz się do traktowania tego jako problemu znajdowania ścieżki. Jeśli napotykasz taką sytuację w praktyce, nie ma sensu nakładać tak niepotrzebnych ograniczeń - dlaczego miałbyś odrzucać inne rozwiązania, które rozwiązałyby twój problem przy użyciu innego podejścia? Zalecam edycję pytania, aby usunąć ten wymóg. 2. Nadal nie powiedziałeś nam, ile jest książek. Czy możesz podać nam numer? Coś bardziej szczegółowego niż „łup”, nawet jeśli jest to jedynie szacunek rzędu wielkości?
DW
1
Wygląda na to, że sporo zastanowiłeś się nad swoim problemem. Dobre! Jednak przechowywanie pełnej historii twoich myśli w jednym pytaniu sprawia, że ​​jest to raczej niewygodne. SE działa o wiele lepiej, jeśli opublikujesz jedno, skoncentrowane pytanie i wystarczająco dużo tła, aby pytanie było możliwe do udzielenia odpowiedzi.
Raphael
1
Jeśli chodzi o „muszę wyrazić to jako problem z grafem” - to ... głupi wymóg. Jeśli problem występuje w P, zapisz go jako LP i oblicz równoważną instancję przepływu maksymalnego. Voila Jeśli jest w NP, ale nie wiesz, że jest w P, zapisz go jako IP i przekonwertuj na dowolny problem z NP-zupełnym wykresem. Voila
Raphael

Odpowiedzi:

5

Widzę, jak pytasz: „Chcę rozwiązać ten problem za pomocą algorytmu Dijkstry, ale nie mogę ustawić dobrego wykresu do uruchomienia”, dlatego przedstawię ci taki wykres.

Digraph, w którym wierzchołki to zestawy półek z książkami.

Ok, mamy książki o wysokości Hn, 1nN i szerokości Wn, z wysokościami w porządku rosnącym dla każdej książki i chcemy pogrupować je w półki.

Ponownie użyj tych liczb dla węzłów rozwiązania n, gdzie ten węzeł reprezentuje stan rozwiązania „wszystkie książki in zostały odłożone. ”Dlatego zaczniemy od węzła 0 i staraj się dostać do węzła Nnajkrótszą ścieżką z algorytmem Dijkstry. Te węzły są wierzchołkami naszego wykresu.

Następnie rysujemy z węzła i do dowolnego węzła j>i skierowana krawędź, która zakłada, że ​​wszystkie te książki pośrednie będą półki z jedną półką, tj. długość tej krawędzi wynosi

Lij=Fj+Cj n=i+1jWn,
gdzie założyłem, że kiedy mówiłeś, koszt tej sumy był Fi+Cixi indeks dolny i na xi było zupełnie bez znaczenia.

Algorytm Dijkstry da nam ścieżkę do węzła o najkrótszej długości N.

CR Drost
źródło
@Christ Drost, thaaaaaaaaanks, dużo! Zrozumienie tego, co próbujesz stworzyć bez grafu, zajęło trochę czasu, ale tego właśnie szukałem! Przeczytałem twój niesamowity profil, pasuje do twojej odpowiedzi haha;)!
Revolucion for Monica,
Zastanawiałem się, czy Bellman-Kalaba nie był bardziej odpowiedni niż Djikstra, jedyną potrzebą jest brak cicruita (a my nie)
Revolucion for Monica
I jest to algorytm, który ostatecznie określa również długości krawędzi. „węzeł n reprezentuje rozwiązanie stwierdzające, że„ wszystkie książki i ≤n zostały odłożone na półkę ”.„ Nie możemy też cofnąć się do tyłu z tym, co podałeś.
Revolucion for Monica
Nie jestem pewien, co oznacza „cofanie się”, ale jeśli chcesz „cofnąć się”, prawdopodobnie będziesz musiał rozważyć bardziej wyrafinowany wykres, w którym węzeł jest listą „liczby książek na półce” Intwiększy niż 1. Prowadzi to do wykresu n^2wierzchołków. Kiedy szukasz ścieżki między A i B, a wszystkie wagi krawędzi są dodatnie, nie ma różnicy między Dijkstra i Bellman-Kalaba, z tym wyjątkiem, że Bellman-Kalaba zawsze próbuje aktualizować krawędzie, które nie wymagają aktualizacji; Dijkstra przechowuje jedynie wskaźniki do wierzchołków, na których mu zależy.
CR Drost
7

Myślę, że mam rozwiązanie twojego problemu. Mam nadzieję, że nie zrozumiałem czegoś w definicji twojego problemu. Oto jest:

Opiszę podejście do programowania dynamicznego. To jestO(n2) algorytm, co oznacza, że ​​skoro liczba książek jest ogromna, niewiele ci to pomoże. (musisz go trochę zmodyfikować!). Przy odrobinie pracy możesz zamienić wspomniane podejście programowania dynamicznego na przykład znalezienia najkrótszej ścieżki na ukierunkowanym wykresie acyklicznym. (Który sam jest algorytmem programowania dynamicznego: P)

Załóżmy, że są n książki o różnej wysokości.

Załóżmy również, że optymalne koszty osiąga się, przypisując książki do i półki wysokości h1,h2,...,hi gdzie h1<h2<...<hi.

Udowodnijmy następujące dwie rzeczy:

ZA. Ca>Ca1

Załóżmy, że jest inaczej. PozwolićBa1 być zestawem książek przypisanych do półki a1 Następnie cost=other,stuff+Ca1thickness(Ba1)

Ponieważ zakładaliśmy, Ca<Ca1, przenieśmy wszystkie książki z półki a1 do a (co jest możliwe od tego czasu ha1<ha.

Więc teraz, cost=other,stuff+Cathickness(Ba)który jest niższy niż wcześniej. Mamy zatem sprzeczność z powodu założonej przez nas Optymalności.

Więc Ca>Ca1 dla wszystkich utworzonych półek

B. Niech j być książką przypisaną do półki a. Udowodnijmy toheight(j)>ha1

To jest dość łatwe. Gdybyheight(j) był mniejszy niż ha1 możemy odłożyć książkę na półkę a1 dla lepszego kosztu (ze względu na A).

Z dwóch rzeczy, które udowodniliśmy, B jest znaczący.

Pozwolić dp[a]= optymalny koszt półek na książki 1...a aby była półka height(a). Musisz znaleźć sposób na zdefiniowaniedp[a] według wartości dp[1],dp[2],....dp[a1]

Zatrzymam się tutaj. Jeśli znasz programowanie dynamiczne, korzystając z faktu B, z łatwością wymyślisz powtórzenie. W przeciwnym razie zapytaj :). Jak powiedziałem, można to zmienić w problem DAG. Znając powyższą relację, łatwo zdać sobie sprawę z tego, co stanowi przewagę(a,b) oznacza i określa jego koszt.

Wreszcie, jak powiedziałem powyżej, ponieważ książki są duże, nie można używać algorytmu dla każdej książki. Myślę, że reprezentowanie jego wysokości przez sumę grubości powinno załatwić sprawę. (Myślę, że tak już jest w twoim oświadczeniu)

(Zgaduję, że liczba różnych wysokości jest znacznie mniejsza niż liczba książek)


jjohn
źródło
dziękuję za tę solidną pomoc! Najpierw miałem pytanie do części A: dlaczego mamy sprzeczność z powodu problemu z optymalizacją? Rozumiem logicznie, że niższy koszt przechowywania książek o niższej wysokości na wyższych półkach jest sprzeczny, ale jaką optymalizację zakładamy? (Być może dlatego, że robię programowanie dynamiczne dopiero w następnym semestrze ...?)
Revolucion for Monica
Po drugie, myślę, że jest literówka, kiedy mówiłeś o konkluzji A. Part Ca<Ca1, wręcz przeciwnie, prawda?
Revolucion for Monica
@ Marine1 Tak. Masz rację. To literówka! Wkrótce to naprawię. Teraz inne pytanie. Załóżmy, że masz optymalny algorytm (tj. Taki, który generuje najlepszy koszt). Jeśli istnieje półkaa w tym tak, że Ca>Ca+1 wtedy moglibyśmy przenieść wszystkie książki z półki a do półki a+1 i nie twórz półki a. Wtedy skończyłbyś na mniejszym koszcie (ponieważ a. Koszt grubości byłby mniejszy i b. Nie byłbyś potrzebnyFa). Ale w naszym założeniu mamy już optymalny algorytm, więc nie może się on utrzymać. Mam nadzieję, że to ci wyjaśni.
jjohn
0

Czasami samo „powiększenie” „najbliższego problemu” w literaturze może pomóc w zrozumieniu teorii i tła problemu, zbudować abstrakcję i wyeliminować fałszywe szczegóły. Najbliższym twoim problemem w literaturze jest tak zwany „problem pakowania pojemników o zmiennej wielkości”. Przykładowe dokumenty znajdują się poniżej. Problem ten jest wysoce teoretycznie zbadany i istnieje pewne gotowe oprogramowanie, które ujawnia się w optymalizacji opakowań w np. Kontenerach transportowych ciężarówek. Istnieją również wersje, w których można dostosować rozmiar pojemnika. Istnieje wiele podejść algorytmicznych. na przykład, od 1 st papieru:

Problemem poruszonym w tym artykule jest ortogonalne pakowanie danego zestawu przedmiotów w kształcie prostokąta w minimalną liczbę trójwymiarowych prostokątnych pojemników.

vzn
źródło