Selamat malam! Saya sebenarnya sedang magang di Archives Nationales of France dan saya menghadapi situasi yang ingin saya selesaikan menggunakan grafik ...
I. Situasi berdebu
Kami ingin mengoptimalkan pengaturan buku perpustakaan saya sesuai dengan ketinggiannya untuk meminimalkan biaya arsip mereka. Ketinggian dan ketebalan buku diketahui. Kami telah mengatur buku-buku dengan urutan ketinggian (Saya tidak tahu apakah itu yang terbaik tapi ... itulah cara kami melakukannya). Mengetahui ketebalan setiap buku, kita dapat menentukan untuk setiap kelas ketebalan yang diperlukan untuk pengaturannya, sebut saja L_i (misalnya, buku-buku yang H_i = 23 \, \ mathrm {cm} tinggi mungkin memiliki ketebalan total L_i = 300 \, \ mathrm {cm} ).
Perpustakaan dapat membuat rak kustom, yang menunjukkan panjang dan tinggi yang diinginkan (tidak ada masalah dengan kedalaman). Satu rak tinggi dan panjang berharga , di mana adalah biaya tetap dan dan adalah biaya rak per satuan panjang.
Perhatikan bahwa rak dengan ketinggian dapat digunakan untuk menyimpan buku-buku dengan ketinggian dengan . Kami ingin meminimalkan biaya.
Tutor saya menyarankan agar saya memodelkan masalah ini sebagai masalah pencarian jalur. Model ini mungkin melibatkan simpul yang diindeks dari hingga . Mentor saya menyarankan agar saya menentukan kondisi yang ada, masing-masing penandaan sisi dan cara menghitung valuasi terkait dengan edge . Saya juga akan OK dengan solusi lain serta wawasan.0 n v ( i , j ) ( i , j )
Misalnya kita miliki untuk Konvensi (periode gelap dari Sejarah Prancis) seperti array:
II Asumsi kutu buku peserta pelatihan
Saya pikir saya harus menghitung algoritma antara Djikstra, Bellman atau Bellman-Kalaba ... Saya mencoba mencari tahu yang mana di subbagian berikut.
1.Kondisi
Kami di sini dengan masalah pathfinding antara simpul dan simpul , harus keluar dari (artinya, jalan (atau jalan) harus ada antara dann n 0 0 n
2. Apa yang dihitung (diperbarui (25/10/2015))
// Bekerja masih dalam proses sejauh yang saya tidak tahu simpul mana dan ujung mana yang harus dimodelkan ...
Tebakan terbaik saya
Saya pikir kita menyingkirkan setidaknya satu jenis rak setiap kali kita menemukan jalur terpendek dari array, tetapi itu hanya asumsi saya ...;).
Saya pikir cara terbaik untuk memodelkan cara membeli rak dan menyimpan buku-buku kita harus terlihat seperti grafik berikut, (tapi, tolong, jangan ragu untuk mengkritik metode saya!;))
sudut:
- adalah rak yang bisa kita gunakan untuk menyimpan buku kita.
- adalah keadaan di mana tidak ada buku yang disimpan. Menggunakan vertice ini memungkinkan saya untuk menggunakan setiap formula biaya (tepi).
edge: adalah biaya menggunakan jenis rak. misalnya: 0 adalah biaya hanya menggunakan rak tipe 1 untuk menyimpan perkamen, naskah ...F 1 + C 1 x 1
Namun, dari sini saya tidak tahu cara membuat masalah jalur terpendek.
Memang, saya tidak akan tahu di mana saya menyimpan semua buku saya.
Ini menuntun saya ke ide lain ...
ide lain ...
Di sini, saya sedang mencari jalur terpendek dari titik tertentu ke status 0, artinya, mengetahui bahwa dokumen tertinggi tinggi, saya sedang mencari cara termurah untuk mengatur dokumen saya.
sudut:
- adalah rak yang bisa kita gunakan untuk menyimpan buku kita.
- adalah keadaan di mana semua buku disimpan. Menggunakan vertice ini memungkinkan saya untuk menggunakan setiap formula biaya (tepi).
edge: adalah biaya menggunakan jenis rak. misalnya: dari 3 adalah biaya menggunakan rak setelah menggunakan rak untuk menyimpan perkamen, manuskrip ...F 1 + C 1 x 1 t y p e 1 t y p e 3
Namun, saya tidak tahu di mana harus meletakkan .
3.Cara menghitung
Saya pikir kita harus mulai dengan rak yang lebih tinggi sejauh kita dapat menyimpan buku-buku yang lebih kecil ...
Melakukan
Kami mengambil cm dengan tinggi di rak tinggi mereka + cm dari tinggi hingga menjadi lebih mahal daripada mengambil mengesampingkan. maka
Sementara saya> <0
Akhirnya, saya tidak tahu bagaimana membuat x ...
Artinya mengatakan bagaimana memilih untuk meletakkan dokumen dalam atau misalnya. 4 3
sumber
Jawaban:
Saya melihat Anda bertanya, "Saya ingin menyelesaikan ini dengan algoritma Dijkstra tetapi saya tidak dapat mengatur grafik yang baik untuk dijalankan," karena itu saya akan menyajikan grafik tersebut kepada Anda.
Sebuah digraf di mana simpul adalah set buku rak.
Oke, kami memiliki buku-buku dengan ketinggian dan lebar dengan ketinggian dalam urutan naik untuk setiap buku, dan kami ingin mengelompokkannya ke dalam rak.Hn, 1≤n≤N Wn,
Reuse angka-angka ini untuk node solusi di mana simpul yang mewakili negara solusi "semua buku telah disimpan." Karena itu kita akan mulai dari node dan berusaha untuk mendapatkan ke simpul dengan jalur terpendek dengan algoritma Dijkstra. Node-node ini adalah simpul dari grafik kita.n, i≤n 0 N
Kami kemudian menggambar dari simpul ke simpul mana pun tepi yang diarahkan yang mengasumsikan bahwa semua buku perantara tersebut akan disimpan dengan satu rak, yaitu panjang tepi ini adalah mana saya berasumsi bahwa ketika Anda mengatakan biaya penjumlahan adalah , subskrip pada sama sekali tidak berarti.i j>i
Algoritma Dijkstra kemudian akan memberi kita jalan terpendek ke simpulN.
sumber
Int
lebih besar dari1
. Ini mengarah ke grafikn^2
simpul. Saat Anda mencari jalur antara A dan B dan semua bobot tepi positif, maka tidak ada perbedaan antara Dijkstra dan Bellman-Kalaba, kecuali Bellman-Kalaba selalu berusaha memperbarui tepi yang tidak perlu diperbarui; Dijkstra hanya menyimpan pointer ke simpul yang ia pedulikan.Saya pikir saya punya solusi untuk masalah Anda. Mudah-mudahan saya tidak salah memahami sesuatu dalam definisi masalah Anda. Ini dia:
Saya akan menjelaskan pendekatan Pemrograman Dinamis. Ini adalah algoritma , yang berarti bahwa karena jumlah buku sangat besar, itu tidak akan banyak membantu Anda. (Anda perlu memodifikasinya sedikit!). Dengan beberapa pekerjaan, Anda dapat mengubah pendekatan Pemrograman Dinamis tersebut menjadi instance untuk menemukan jalur terpendek pada Grafik Acyclic yang Diarahkan. (Yang itu sendiri adalah algoritma pemrograman dinamis: P)O(n2)
Misalkan ada buku semua ketinggian berbeda.n
Misalkan juga bahwa biaya optimal dicapai dengan menempatkan buku-buku untuk shelfs tinggi mana .i h1,h2,...,hi h1<h2<...<hi
Mari kita buktikan dua hal berikut:
A.Ca>Ca−1
Misalkan sebaliknya. Biarkan menjadi set buku yang ditugaskan ke rak LaluBa−1 a−1 cost=other,stuff+Ca−1∗thickness(Ba−1)
Karena, kita mengasumsikan, , mari kita transfer semua buku rak ke (yang dimungkinkan karena .Ca<Ca−1 a−1 a ha−1<ha
Jadi, sekarang, yang lebih rendah dari sebelumnya. Oleh karena itu, kami memiliki kontradiksi karena Optimalitas yang kami asumsikan.cost=other,stuff+Ca∗thickness(Ba)
Jadi untuk semua rak yang dibuatCa>Ca−1
B. Biarkan menjadi buku yang ditugaskan untuk rak . Mari kita buktikanj a height(j)>ha−1
Ini cukup mudah. Jika lebih kecil dari kita bisa meletakkan buku ke rak dengan biaya yang lebih baik (karena A).height(j) ha−1 a−1
Dari dua hal yang telah kami buktikan, B adalah yang signifikan.
Misalkan = biaya optimal untuk rak buku sehingga ada rak . Anda harus menemukan cara untuk mendefinisikan dengan nilai-nilaidp[a] 1...a height(a) dp[a] dp[1],dp[2],....dp[a−1]
Saya akan berhenti di sini. Jika Anda terbiasa dengan Pemrograman Dinamis, menggunakan fakta B, Anda akan dengan mudah menemukan pengulangan. Kalau tidak, tanyakan :). Seperti yang saya katakan, ini bisa berubah menjadi masalah DAG. Mengetahui hubungan di atas, mudah untuk menyadari apa tepi berdiri dan menentukan biayanya.(a,b)
Terakhir tetapi tidak kalah pentingnya, seperti yang saya katakan di atas, karena buku-bukunya besar, Anda tidak dapat menggunakan algoritme untuk setiap buku. Saya pikir bahwa mewakili tingginya dengan jumlah ketebalannya harusnya cukup. (Saya pikir sudah seperti itu dari pernyataan Anda)
(Saya menduga jumlah ketinggian yang berbeda jauh lebih sedikit daripada jumlah buku)
sumber
Kadang-kadang hanya "memperbesar" pada "masalah terdekat" dalam literatur dapat membantu memahami teori dan latar belakang masalah, membangun abstraksi, dan menghilangkan detail palsu. Masalah terdekat dalam literatur dengan milik Anda tampaknya adalah apa yang dikenal sebagai "masalah ukuran kemasan bin variabel". Makalah contoh disertakan di bawah ini. Masalah ini sangat dipelajari secara teoritis dan ada beberapa perangkat lunak yang ada, itu muncul dalam mengoptimalkan kotak kemasan di misalnya truk pengiriman kontainer. Ada juga versi di mana seseorang dapat menyesuaikan ukuran wadah. Ada banyak pendekatan algoritmik. misalnya, dari 1 st kertas:
MENGOPTIMALKAN KEMASAN BIN TIGA DIMENSI MELALUI SIMULASI / Dube, Kanavathy
Bin Packing Masalah dengan Volume dan Kapasitas Tidak Pasti / Peng, Zhang
Algoritma pengemasan bin 3d , stackoverflow
sumber