Làm thế nào để giải quyết vấn đề sắp xếp tại Lưu trữ Quốc gia Pháp bằng lý thuyết đồ thị?


9

Chào buổi tối! Tôi thực sự đang thực tập tại Archives Nationales of France và tôi đã gặp phải một tình huống tôi muốn giải quyết bằng đồ thị ...

I. Tình hình bụi bặm.

Chúng tôi muốn tối ưu hóa việc sắp xếp sách của thư viện của tôi theo chiều cao của chúng để giảm thiểu chi phí lưu trữ của chúng. Chiều cao và độ dày của những cuốn sách được biết đến. Chúng tôi đã sắp xếp các cuốn sách theo thứ tự tăng dần về chiều cao (Tôi không biết đó có phải là điều tốt nhất không nhưng ... đó là cách chúng tôi đã làm). Biết độ dày của mỗi cuốn sách, chúng ta có thể xác định cho mỗi lớp độ dày cần thiết cho sự sắp xếp của chúng, gọi nó là (ví dụ: những cuốn sách có có thể có tổng độ dày ).H i L i H i = 23H1,H2,,HnHiLiL i = 300Hi=23cmLi=300cm

Thư viện có thể tùy chỉnh kệ sản xuất, cho biết chiều dài và chiều cao mong muốn (không có vấn đề với độ sâu). Một kệ có chiều cao và chiều dài giá là , trong đó là chi phí cố định và là chi phí của giá trên mỗi đơn vị chiều dài.x i F i + C i x i F i C iHTôixTôiFTôi+CTôixTôiFTôiCTôi

Lưu ý rằng một kệ có chiều cao có thể được sử dụng để lưu trữ sách có chiều cao với . Chúng tôi muốn giảm thiểu chi phí.H j j iHTôiHjjTôi

Gia sư của tôi đề nghị tôi mô hình hóa vấn đề này như một vấn đề tìm đường. Mô hình có thể bao gồm các đỉnh được lập chỉ mục từ đến . Người cố vấn của tôi đề nghị tôi tìm ra các điều kiện hiện có, từng ký hiệu cạnh và cách tính giá trị liên quan đến cạnh . Tôi cũng sẽ ổn với các giải pháp khác cũng như hiểu biết sâu sắc.0 n v ( i , j ) ( i , j )n+10nv(Tôi,j)(Tôi,j)

Chẳng hạn, chúng ta có Công ước (một thời kỳ đen tối của Lịch sử Pháp) như một mảng:

Tôi1234HTôi12cm15cm18cm23cmLTôi100cm300cm200cm300cmFTôi1000120011001600CTôi5/cm6/cm7/cm9/cm

II. Các giả định của một con mọt sách

Tôi nghĩ rằng tôi phải tính toán một thuật toán giữa Djikstra, Bellman hoặc Bellman-Kalaba ... Tôi đang cố gắng tìm ra thuật toán nào trong các phần phụ sau.

1. Điều kiện

Chúng ta đang ở đây với một vấn đề tìm đường giữa một đỉnh và một đỉnh , phải đi ra từ (có nghĩa là, một đường dẫn (hoặc đi bộ) phải tồn tại giữa vàn n 0 0 n0nn00n

2. Những gì cần tính toán (cập nhật (25/10/2015))

// Công việc vẫn đang được xử lý theo như tôi không biết nên chọn đỉnh nào và cạnh nào để tạo mô hình ...

Dự đoán tốt nhất của tôi

Tôi nghĩ rằng chúng tôi loại bỏ ít nhất một loại kệ mỗi lần chúng tôi tìm thấy một con đường ngắn nhất từ ​​mảng, nhưng đó chỉ là giả định của tôi ...;).

Tôi nghĩ rằng cách tốt nhất để mô hình hóa cách mua kệ và lưu trữ sách của chúng tôi phải giống như biểu đồ sau, (nhưng, xin vui lòng, chỉ trích phương pháp của tôi!))

từ 0 đồ thị

đỉnh:

  • Tôi[1,4] là những kệ chúng ta có thể sử dụng để lưu trữ sách của mình.
  • 0 là trạng thái không có sách được lưu trữ. Sử dụng đỉnh này cho phép tôi sử dụng từng công thức chi phí (cạnh).

các cạnh: là chi phí sử dụng một loại giá đỡ. ví dụ: fom 0 là chi phí chỉ sử dụng giá loại 1 để lưu trữ giấy da, bản thảo ...F 1 + C 1 x 1FTôi+CTôixTôi,Tôi[1,4]F1+C1x1

Tuy nhiên, từ đây tôi không biết làm thế nào để tạo ra vấn đề con đường ngắn nhất của mình.

Thật vậy, tôi sẽ không biết nơi nào tôi sẽ cất tất cả các cuốn sách của mình.

Điều này dẫn tôi đến một ý tưởng khác ...

Một ý tưởng khác...

đến 0 đồ thị

Ở đây, tôi đang tìm kiếm con đường ngắn nhất từ ​​một đỉnh nhất định đến trạng thái 0, nghĩa là, biết rằng tài liệu cao nhất là cao, tôi đang tìm cách rẻ nhất để sắp xếp tài liệu của mình.type Tôi

đỉnh:

  • Tôi[1,4] là những kệ chúng ta có thể sử dụng để lưu trữ sách của mình.
  • 0 là trạng thái nơi tất cả các cuốn sách được lưu trữ. Sử dụng đỉnh này cho phép tôi sử dụng từng công thức chi phí (cạnh).

các cạnh: là chi phí sử dụng một loại giá đỡ. ví dụ: từ 3 ​​là chi phí sử dụng kệ sau khi sử dụng kệ để lưu trữ giấy da, bản thảo của chúng tôi ...F 1 + C 1 x 1 t y p e 1 t y p eFTôi+CTôixTôi,Tôi[1,4]F1+C1x1type 1type 3

Tuy nhiên, tôi không biết nên đặt .F4+C4x4

3. Cách tính

Tôi nghĩ rằng chúng ta phải bắt đầu với những kệ cao hơn chừng nào chúng ta có thể lưu trữ những cuốn sách nhỏ hơn ...

Làm

Chúng tôi lấy cm với chiều cao trong chiều cao của chúng + cm của chiều cao cho đến khi nó trở nên đắt hơn so với lấy xiên. thìH i = n z H i = n - 1 H i = n - 1 i = i - 1LnHTôi= =nzHi=n1Hi=n1i=i1

Trong khi tôi> <0

Cuối cùng, tôi không biết làm thế nào để thay đổi x ...

Đó là nói làm thế nào để chọn đặt tài liệu trong hoặc chẳng hạn. 4 3xi43


Có bao nhiêu cuốn sách ở đây? tức là các thuật toán là những thuật toán duy nhất được chấp nhận? O(n),O(nlogn)
jjohn

5
Tôi không thấy điều này có liên quan đến đồ thị: tại sao buộc bản thân phải làm một cái gì đó dựa trên đồ thị khi vấn đề trong tay là thứ gì đó giống như thùng rác? Mô hình của bạn không tính đến thực tế của giá đỡ. Ví dụ, một đơn vị kệ có kệ có chiều dài nhất định: bạn có thể xếp các kệ dài năm mét lên nhau, nhưng kệ 99cm, kệ 172cm, kệ 128cm, kệ 83cm và kệ 18cm (tổng chiều dài 5m) hoàn toàn vô dụng. Và, tại sao trên trái đất lại tốn 2500 € để xây dựng một mét kệ cao 23cm? Điều đó dường như không thực tế từ xa. Thư viện này có thật không?
David Richerby

3
1. Tôi không hiểu tại sao bạn buộc bản thân phải tiếp cận vấn đề này như một vấn đề tìm đường. Nếu bạn đang đối mặt với tình huống này trong thực tế, sẽ không có ý nghĩa gì khi áp đặt một giới hạn không cần thiết như vậy - tại sao bạn lại từ chối các giải pháp khác giải quyết vấn đề của mình bằng một cách tiếp cận khác? Tôi khuyên bạn nên chỉnh sửa câu hỏi để loại bỏ yêu cầu đó. 2. Bạn vẫn chưa cho chúng tôi biết có bao nhiêu cuốn sách. Bạn có thể cho chúng tôi một số? Một cái gì đó cụ thể hơn "một sự lỏng lẻo", ngay cả khi nó chỉ là một ước tính thứ tự độ lớn?
DW

1
Có vẻ như bạn đã dành khá nhiều suy nghĩ về vấn đề của bạn. Điều đó thật tốt! Tuy nhiên, lưu trữ một lịch sử đầy đủ về suy nghĩ của bạn trong một câu hỏi làm cho nó khá khó sử dụng. SE hoạt động tốt hơn rất nhiều nếu bạn đăng một câu hỏi duy nhất, tập trung và chỉ đủ nền để làm cho câu hỏi có thể trả lời được.
Raphael

1
Về "Tôi cần diễn đạt nó như một vấn đề đồ thị" - đó là một ... yêu cầu ngu ngốc. Nếu vấn đề nằm ở P, hãy viết nó thành LP và tính toán một trường hợp lưu lượng tối đa tương đương. Voila. Nếu nó ở NP nhưng bạn không biết nó ở P, hãy viết nó dưới dạng IP và chuyển đổi sang bất kỳ vấn đề đồ thị hoàn chỉnh NP nào. Voila.
Raphael

Câu trả lời:


5

Tôi thấy bạn khi hỏi: "Tôi muốn giải quyết vấn đề này bằng thuật toán của Dijkstra nhưng tôi không thể thiết lập một biểu đồ tốt để chạy", do đó tôi sẽ trình bày cho bạn một biểu đồ như vậy.

Một bản vẽ trong đó các đỉnh là bộ sách được gác lại.

Được rồi, chúng tôi có những cuốn sách có chiều cao và chiều rộng với độ cao theo thứ tự tăng dần cho mỗi cuốn sách và chúng tôi muốn nhóm chúng thành giá sách.Hn, 1nNWn,

Sử dụng lại các số này cho các nút giải pháp trong đó nút đó đại diện cho trạng thái giải pháp "tất cả các sách đã bị gác lại." Do đó, chúng tôi sẽ bắt đầu tại nút và tìm cách đến nút bằng con đường ngắn nhất với thuật toán của Dijkstra. Các nút này là các đỉnh của đồ thị của chúng tôi.n,in0N

Sau đó chúng tôi rút ra từ nút đến bất kỳ node một lợi thế cạnh đạo mà giả định rằng tất cả những cuốn sách trung gian sẽ được hoãn với một kệ, tức là độ dài của cạnh này là L i j = F j + C j j Σ n = i + 1 W n , trong đó tôi đã giả sử rằng khi bạn nói chi phí của tổng là F i + C i x i thì chỉ số i trên x i là hoàn toàn vô nghĩa.ij>i

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

N.


@Christ Drost, thaaaaaaaaanks, rất nhiều! Phải mất thời gian để hiểu những gì bạn đang cố gắng tạo ra mà không có bất kỳ biểu đồ nào nhưng đó chính xác là những gì tôi đang tìm kiếm! Tôi đọc hồ sơ tuyệt vời của bạn, nó phù hợp với câu trả lời của bạn haha;)!
Cuộc cách mạng cho Monica

Tôi đã tự hỏi nếu Bellman-Kalaba không phù hợp hơn Djikstra, thì điều cần thiết duy nhất là không có bất kỳ quả bưởi nào (và chúng tôi không)
Cuộc cách mạng cho Monica

Và đó cũng là một thuật toán xác định chính xác độ dài của các cạnh. "Nút n đại diện cho một giải pháp nêu rõ" tất cả các cuốn sách tôi đã bị gác lại. "" Chúng tôi không thể lạc hậu quá với những gì bạn cung cấp.
Cuộc cách mạng cho Monica

Tôi không chắc "đi lùi" nghĩa là gì, nhưng nếu bạn muốn "đi lùi" thì có lẽ bạn phải xem xét một biểu đồ phức tạp hơn trong đó một nút là danh sách "số lượng sách được đặt trên kệ này", một Intlớn hơn 1. Điều này dẫn đến một đồ thị của n^2các đỉnh. Khi bạn đang tìm kiếm một con đường giữa A và B và tất cả các trọng số cạnh đều dương thì không có sự khác biệt giữa Dijkstra và Bellman-Kalaba, ngoại trừ Bellman-Kalaba luôn cố gắng cập nhật các cạnh không cần cập nhật; Dijkstra chỉ lưu trữ các con trỏ đến các đỉnh mà nó quan tâm.
CR Drost

7

Tôi nghĩ rằng tôi có một giải pháp cho vấn đề của bạn. Hy vọng rằng tôi đã không hiểu nhầm điều gì đó trong định nghĩa vấn đề của bạn. Nó đi từ đây:

O(n2)

n

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

Hãy chứng minh hai điều sau đây:

Ca>Ca1

Bmột-1một-1coSt= =other,Stbạnff+Cmột-1*thTôickneSS(Bmột-1)

Cmột<Cmột-1một-1mộthmột-1<hmột

coSt= =other,Stbạnff+Cmột*thTôickneSS(Bmột)

Ca>Ca1

jaheight(j)>ha1

height(j)ha1a1

Trong hai điều chúng tôi đã chứng minh, B là điều quan trọng.

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

(a,b)

Cuối cùng nhưng không kém phần quan trọng, như tôi đã nói ở trên, vì sách rất lớn, bạn không thể sử dụng thuật toán cho mỗi cuốn sách. Tôi nghĩ rằng đại diện cho chiều cao của nó bằng tổng độ dày của nó nên thực hiện các mẹo. (Tôi nghĩ rằng nó đã như thế từ tuyên bố của bạn)

(Tôi đoán số lượng độ cao khác nhau ít hơn nhiều so với số lượng sách)



cảm ơn vì sự giúp đỡ vững chắc này Đầu tiên tôi có một câu hỏi cho phần A: tại sao chúng ta có mâu thuẫn do vấn đề tối ưu? Tôi hiểu một cách logic rằng chi phí thấp hơn khi lưu trữ sách có chiều cao thấp hơn ở kệ cao hơn là mâu thuẫn nhưng tôi cho rằng sự lạc quan nào? (Điều đó có lẽ bởi vì tôi chỉ làm lập trình động vào học kỳ tới ...?)
Cuộc cách mạng cho Monica

Ca<Ca1

aCa>Ca+1aa+1aFa
jjohn

0

Đôi khi chỉ cần "phóng to" vào "vấn đề gần nhất" trong tài liệu có thể giúp hiểu lý thuyết và nền tảng đằng sau vấn đề, xây dựng một sự trừu tượng hóa và loại bỏ các chi tiết giả. Vấn đề gần nhất trong tài liệu của bạn dường như là vấn đề được gọi là "vấn đề đóng gói thùng có kích thước thay đổi". Giấy tờ mẫu được bao gồm dưới đây. Vấn đề này được nghiên cứu rất nhiều về mặt lý thuyết và một số phần mềm sẵn có, nó xuất hiện trong việc tối ưu hóa các hộp đóng gói trong ví dụ như xe tải vận chuyển container. Ngoài ra còn có các phiên bản mà người ta có thể điều chỉnh kích thước container. Có nhiều cách tiếp cận thuật toán. ví dụ: từ giấy thứ 1 :

Vấn đề được giải quyết trong bài viết này là việc đóng gói trực tiếp một tập hợp các vật phẩm hình chữ nhật nhất định vào một số lượng tối thiểu các thùng hình chữ nhật ba chiều.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.