วิธีแก้ปัญหาการจัดการที่ Archive Nationale of France โดยใช้ทฤษฎีกราฟ?


9

สวัสดีตอนเย็น! จริงๆแล้วฉันกำลังฝึกงานที่ Archives Nationales of France และฉันพบสถานการณ์ที่ฉันต้องการแก้ปัญหาโดยใช้กราฟ ...

I. สถานการณ์ที่เต็มไปด้วยฝุ่น

เราต้องการเพิ่มประสิทธิภาพการจัดเรียงหนังสือในห้องสมุดของฉันตามความสูงเพื่อลดต้นทุนการเก็บถาวร ความสูงและความหนาของหนังสือเป็นที่รู้จัก เราได้จัดเรียงหนังสือตามลำดับความสูง (ฉันไม่รู้ว่ามันเป็นสิ่งที่ดีที่สุด แต่ ... นั่นคือวิธีที่เราทำ) เมื่อทราบความหนาของหนังสือแต่ละเล่มเราสามารถกำหนดความหนาที่จำเป็นสำหรับแต่ละชั้นสำหรับการจัดเรียงเรียกว่า (ตัวอย่างเช่นหนังสือที่สูงอาจมีความหนารวม )H1,H2,,HnHiLiHi=23cmLi=300cm

ห้องสมุดสามารถผลิตชั้นวางที่กำหนดเองโดยระบุความยาวและความสูงที่ต้องการ ชั้นวางของความสูงและความยาวค่าใช้จ่าย โดยที่เป็นต้นทุนคงที่และคือต้นทุนของชั้นวางต่อหน่วยความยาวHixiFi+CixiFiCi

โปรดทราบว่าการเก็บรักษาของความสูงสามารถใช้ในการเก็บหนังสือของความสูง กับฉัน เราต้องการลดต้นทุนHiHjji

ผู้สอนของฉันแนะนำว่าฉันทำแบบจำลองปัญหานี้เป็นปัญหาในการค้นหาเส้นทาง รูปแบบที่อาจเกี่ยวข้องกับการจุดจัดทำดัชนีแบบฟอร์มเพื่อnพี่เลี้ยงของฉันแนะนำให้ผมทำงานออกเงื่อนไขที่มีอยู่แต่ละขอบหมายและวิธีการในการทำงานจากการประเมินค่าที่เกี่ยวข้องกับขอบj) ฉันก็จะตกลงกับโซลูชั่นอื่น ๆ เช่นเดียวกับข้อมูลเชิงลึกn+10nv(i,j)(i,j)

ตัวอย่างเช่นเรามีอนุสัญญา (ช่วงที่มืดมนของประวัติศาสตร์ฝรั่งเศส) เช่นอาเรย์:

i1234Hi12cm15cm18cm23cmLi100cm300cm200cm300cmFi1000120011001600Ci5/cm6/cm7/cm9/cm

ครั้งที่สอง สมมติฐานของหนอนหนังสือฝึกหัด

ฉันคิดว่าฉันต้องคำนวณอัลกอริธึมระหว่าง Djikstra, Bellman หรือ Bellman-Kalaba ... ฉันพยายามหาว่าอันไหนในส่วนย่อยต่อไปนี้

1.Conditions

เราอยู่ที่นี่พร้อมกับปัญหาการหาตำแหน่งระหว่างจุดยอดและจุดยอด ,ต้องออกจาก (กล่าวคือต้องมีเส้นทาง (หรือเดิน) อยู่ระหว่างถึง0nn00n

2. สิ่งที่ต้องคำนวณ (อัปเดต (25/10/2558))

// ทำงานภายใต้กระบวนการเท่าที่ฉันไม่รู้ว่าจุดยอดไหนและขอบแบบไหน ...

เดาที่ดีที่สุดของฉัน

ฉันคิดว่าเรากำจัดชั้นวางอย่างน้อยหนึ่งประเภททุกครั้งที่เราพบเส้นทางที่สั้นที่สุดจากอาเรย์ แต่นั่นเป็นเพียงข้อสันนิษฐานของฉัน ... ;)

ฉันคิดว่าวิธีที่ดีที่สุดในการทำแบบจำลองวิธีการซื้อชั้นวางและเก็บหนังสือของเราต้องมีลักษณะเป็นกราฟต่อไปนี้(แต่โปรดได้โปรดวิจารณ์วิธีการของฉัน!;)

จาก 0 กราฟ

จุด:

  • i[1,4]เป็นชั้นวางที่เราสามารถใช้เก็บหนังสือของเรา
  • 0คือสถานะที่ไม่มีการจัดเก็บหนังสือ การใช้จุดยอดนี้ทำให้ฉันสามารถใช้สูตรแต่ละค่าใช้จ่าย (ขอบ)

ขอบ:เป็นค่าใช้จ่ายโดยใช้ประเภทของชั้นวาง ตัวอย่างเช่น: fom 0 เป็นค่าใช้จ่ายที่ใช้เฉพาะชั้นวางประเภท 1 เท่านั้นในการจัดเก็บเอกสารต้นฉบับของเรา ...Fi+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. วิธีคำนวณ

ฉันคิดว่าเราต้องเริ่มต้นด้วยชั้นวางที่สูงขึ้นเท่าที่เราจะสามารถเก็บหนังสือเล่มเล็ก ๆ ...

ทำ

เราใช้ cm ของกับความในระดับความสูง + cm ของความสูงจนกว่ามันจะมีราคาแพงกว่าการเอาดอง. ดังนั้นLnHi=nzHi=n1Hi=n1i=i1

ในขณะที่ฉัน> <0

ในที่สุดฉันไม่รู้วิธีที่จะทำให้ x เปลี่ยนแปลง ...

กล่าวคือวิธีเลือกใส่เอกสารในหรือเช่นxi43


มีหนังสือกี่เล่ม? นั่นคือ อัลกอริทึมเดียวที่ยอมรับได้? O(n),O(nlogn)
jjohn

5
ฉันไม่เห็นสิ่งนี้เกี่ยวข้องกับกราฟ: เหตุใดจึงต้องบังคับให้คุณทำสิ่งที่เป็นกราฟเมื่อปัญหาในมือเป็นเหมือนการจัดถังขยะ แบบจำลองของคุณไม่คำนึงถึงการใช้งานจริงของการเก็บเข้าลิ้นชัก ตัวอย่างเช่นหน่วยเก็บเข้าลิ้นชักมีชั้นวางของที่มีความยาว: คุณสามารถวางชั้นวางยาวห้าเมตรซ้อนกันได้ แต่ชั้นวาง 99 ซม. ชั้น 172 ซม. ชั้น 128 ซม. ชั้นวาง 83 ซม. และชั้น 18 ซม. (ความยาวรวม 5m) ไร้ประโยชน์อย่างสมบูรณ์ และทำไมบนโลกถึงต้องเสียค่าใช้จ่าย€ 2,500 เพื่อสร้างชั้นวางสูง 23 ซม. หนึ่งเมตร ที่ดูเหมือนจะไม่จริงจากระยะไกล ห้องสมุดนี้เป็นของจริงหรือ
David Richerby

3
1. ฉันไม่เข้าใจว่าทำไมคุณต้องบังคับตัวเองให้เข้าใกล้ปัญหานี้ หากคุณกำลังเผชิญกับสถานการณ์นี้ในทางปฏิบัติมันไม่มีเหตุผลที่จะกำหนดข้อ จำกัด ที่ไม่จำเป็นเช่นนี้ - ทำไมคุณถึงปฏิเสธวิธีแก้ไขปัญหาอื่น ๆ ที่แก้ปัญหาของคุณโดยใช้วิธีการอื่น ฉันแนะนำให้คุณแก้ไขคำถามเพื่อลบข้อกำหนดนั้น 2. คุณยังไม่ได้บอกเราว่ามีหนังสือกี่เล่ม คุณให้เบอร์กับเราได้ไหม มีอะไรพิเศษมากกว่า "a loooot" แม้ว่าจะเป็นเพียงการประมาณลำดับความสำคัญ
DW

1
ดูเหมือนว่าคุณใช้ความคิดไปกับปัญหาของคุณแล้ว ดีแล้ว! อย่างไรก็ตามการเก็บประวัติความคิดของคุณไว้ในคำถามเดียวทำให้มันค่อนข้างไม่สะดวก SE ทำงานได้ดีขึ้นมากถ้าคุณโพสต์คำถามที่มุ่งเน้นและพื้นหลังเพียงพอที่จะทำให้คำถามตอบได้
Raphael

1
เกี่ยวกับ "ฉันต้องการแสดงเป็นปัญหากราฟ" - นั่นเป็น ... ข้อกำหนดเรื่องโง่ หากปัญหาอยู่ใน P ให้เขียนมันเป็น LP และคำนวณอินสแตนซ์การไหลสูงสุดที่เทียบเท่า voila ถ้ามันอยู่ใน NP แต่คุณไม่รู้ว่ามันอยู่ใน P ให้เขียนมันเป็น IP และแปลงเป็นปัญหากราฟ NP-complete voila
Raphael

คำตอบ:


5

ฉันเห็นคุณถามว่า "ฉันต้องการแก้ปัญหานี้ด้วยอัลกอริทึมของ Dijkstra แต่ฉันไม่สามารถตั้งค่ากราฟที่ดีให้ทำงานได้" ดังนั้นฉันจะแสดงกราฟดังกล่าวให้คุณ

กราฟิคที่จุดยอดเป็นชุดของหนังสือที่มีชั้นวาง

โอเคเรามีหนังสือที่มีความสูงและความกว้างมีความสูงตามลำดับจากน้อยไปหามากสำหรับหนังสือแต่ละเล่มและเราต้องการจัดกลุ่มไว้ในชั้นวางหนังสือHn, 1nNWn,

ใช้หมายเลขเหล่านี้ซ้ำสำหรับโหนดโซลูชันที่โหนดนั้นหมายถึงสถานะโซลูชัน "หนังสือทั้งหมดที่ถูกวางไว้" ดังนั้นเราจะเริ่มต้นที่โหนดและหาทางไปที่โหนดโดยเส้นทางที่สั้นที่สุดด้วยอัลกอริทึมของ Dijkstra โหนดเหล่านี้คือจุดยอดของกราฟของเราn,in0N

จากนั้นเราดึงจากโหนดไปยังโหนดใด ๆเป็นขอบกำกับซึ่งถือว่าหนังสือตัวกลางเหล่านั้นทั้งหมดจะถูกจัดวางด้วยชั้นหนึ่งเดียวนั่นคือความยาวของขอบนี้คือที่ฉันคิดว่าเมื่อคุณพูดว่าราคาของผลรวมคือตัวห้อยบนนั้นไม่มีความหมายเลยij>i

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

อัลกอริทึมของ Dijkstra จะให้เส้นทางที่สั้นที่สุดไปยังโหนดN.


@Christ Drost, thaaaaaaaaanks มาก ๆ ! ต้องใช้เวลาในการทำความเข้าใจสิ่งที่คุณกำลังพยายามสร้างโดยไม่มีกราฟ แต่นั่นคือสิ่งที่ฉันกำลังมองหา! ฉันอ่านประวัติที่น่าทึ่งของคุณมันเหมาะกับคำตอบของคุณฮ่า ๆ ๆ )!
Revolucion สำหรับโมนิก้า

ฉันสงสัยว่า Bellman-Kalaba ไม่เหมาะสมกว่า Djikstra ความต้องการเพียงอย่างเดียวคือไม่มีผลไม้ cicruit (และเราไม่มี)
Revolucion สำหรับ Monica

และมันคือแอลกอฮอร์มที่กำหนดความยาวของขอบอย่างชัดเจนเช่นกัน "node n หมายถึงวิธีแก้ปัญหาที่ระบุ" หนังสือทั้งหมดที่ฉันถูกระงับ ""เราไม่สามารถย้อนกลับด้วยสิ่งที่คุณให้ไว้
Revolucion สำหรับโมนิก้า

ฉันไม่แน่ใจว่าคำว่า "ไปข้างหลัง" หมายถึงอะไร แต่ถ้าคุณต้องการที่จะ "ย้อนกลับ" คุณอาจต้องพิจารณากราฟที่ซับซ้อนกว่านี้ซึ่งโหนดเป็นรายการของ "จำนวนหนังสือที่ถูกเก็บโดยชั้นวางนี้" และมากกว่าInt 1สิ่งนี้นำไปสู่กราฟของn^2จุดยอด เมื่อคุณกำลังมองหาเส้นทางระหว่าง A และ B และน้ำหนักขอบทั้งหมดเป็นค่าบวกแล้วไม่มีความแตกต่างระหว่าง Dijkstra และ Bellman-Kalaba ยกเว้น Bellman-Kalaba พยายามอัปเดตขอบที่ไม่จำเป็นต้องอัปเดตอยู่เสมอ Dijkstra เก็บตัวชี้ไปยังจุดสูงสุดที่มันสนใจเท่านั้น
CR Drost

7

ฉันคิดว่าฉันมีวิธีแก้ไขปัญหาของคุณ หวังว่าฉันไม่ได้เข้าใจผิดบางอย่างในคำนิยามของปัญหาของคุณ นี่มันไป:

ฉันจะอธิบายวิธีการเขียนโปรแกรมแบบไดนามิก มันเป็น อัลกอริทึมซึ่งหมายความว่าเนื่องจากจำนวนหนังสือมีขนาดใหญ่มากจึงไม่ช่วยคุณได้มากนัก (คุณต้องแก้ไขมันนิดหน่อย!) ในการทำงานบางอย่างคุณสามารถเปลี่ยนวิธีการเขียนโปรแกรมแบบไดนามิกเป็นตัวอย่างของการค้นหาเส้นทางที่สั้นที่สุดบนกราฟ Directed Acyclic Graph (ซึ่งตัวเองเป็นอัลกอริทึมการเขียนโปรแกรมแบบไดนามิก: P)O(n2)

สมมติว่ามีหนังสือเล่มที่มีความสูงต่างกันทั้งหมดn

สมมติว่าค่าใช้จ่ายที่ดีที่สุดนั้นสามารถทำได้โดยการกำหนดหนังสือให้กับชั้นวางของความสูงโดยที่{i}ih1,h2,...,hih1<h2<...<hi

ลองพิสูจน์สองสิ่งต่อไปนี้:

A.Ca>Ca1

สมมติว่าตรงกันข้าม ให้เป็นชุดหนังสือที่กำหนดให้กับชั้น จากนั้นBa1a1cost=other,stuff+Ca1thickness(Ba1)

ตั้งแต่เราสันนิษฐาน ขอโอนหนังสือทุกเล่มของการเก็บรักษาเพื่อ(ซึ่งเป็นไปได้ตั้งแต่{a}Ca<Ca1a1aha1<ha

ดังนั้นตอนนี้ซึ่งต่ำกว่าก่อนหน้านี้ ดังนั้นเราจึงมีความขัดแย้งเนื่องจากความดีที่เราคาดไว้cost=other,stuff+Cathickness(Ba)

ดังนั้นสำหรับชั้นวางทั้งหมดที่สร้างขึ้นCa>Ca1

บี Let BE หนังสือที่ถูกกำหนดให้เก็บรักษา ลองพิสูจน์jaheight(j)>ha1

เรื่องนี้ค่อนข้างง่าย หากเล็กกว่าเราสามารถนำหนังสือเล่มนี้ไปวางในชั้นเพื่อค่าใช้จ่ายที่ดีขึ้น (เนื่องจาก A)height(j)ha1a1

จากสองสิ่งที่เราพิสูจน์แล้ว B เป็นสิ่งสำคัญ

ให้ = ค่าใช้จ่ายที่เหมาะสมสำหรับการเก็บเข้าลิ้นชักหนังสือเพื่อให้มีการเก็บรักษาของ(ก) คุณต้องหาวิธีที่จะกำหนดโดยค่าdp[a]1...aheight(a)dp[a]dp[1],dp[2],....dp[a1]

ฉันจะหยุดที่นี่ หากคุณคุ้นเคยกับการเขียนโปรแกรมแบบไดนามิกโดยใช้ข้อเท็จจริง B คุณจะเกิดขึ้นได้ง่าย ๆ มิฉะนั้นถาม :) ดังที่ฉันได้กล่าวมาสิ่งนี้สามารถกลายเป็นปัญหา DAG ได้ เมื่อทราบถึงความสัมพันธ์ข้างต้นมันง่ายที่จะรู้ว่าขอบหมายถึงอะไรและกำหนดค่าใช้จ่าย(a,b)

สุดท้าย แต่ไม่ท้ายสุดอย่างที่ฉันได้กล่าวไว้ข้างต้นเนื่องจากหนังสือมีขนาดใหญ่คุณไม่สามารถใช้อัลกอริทึมสำหรับหนังสือแต่ละเล่มได้ ฉันคิดว่าการแทนความสูงของมันด้วยผลรวมของความหนาของมันนั้นควรจะเป็นการหลอกลวง (ฉันคิดว่ามันเป็นเช่นนั้นจากคำสั่งของคุณ)

(ฉันเดาว่าจำนวนความสูงที่แตกต่างกันนั้นน้อยกว่าจำนวนหนังสือมากนัก)



ขอบคุณสำหรับความช่วยเหลือที่มั่นคงนี้! ครั้งแรกฉันมีคำถามสำหรับส่วน A: ทำไมเราถึงมีความขัดแย้งเนื่องจากปัญหาในแง่ดี? ฉันเข้าใจว่ามันมีเหตุผลว่าค่าใช้จ่ายที่ต่ำกว่าเมื่อเก็บหนังสือที่มีความสูงต่ำกว่าในชั้นวางที่สูงกว่านั้นขัดแย้งกัน แต่ฉันจะทำอะไรในแง่ดีที่สุด (นั่นอาจเป็นเพราะฉันทำเฉพาะการเขียนโปรแกรมแบบไดนามิกภาคการศึกษาถัดไป ... ?)
Revolucion สำหรับ Monica

ประการที่สองฉันคิดว่ามีการพิมพ์ผิดเมื่อคุณพูดถึงข้อสรุปส่วน A. มันตรงกันข้ามใช่ไหม Ca<Ca1
Revolucion สำหรับโมนิก้า

@ Marine1 ใช่ คุณพูดถูก มันพิมพ์ผิด! จะแก้ไขทันที ตอนนี้สำหรับคำถามอื่น ๆ สมมติว่าคุณมีอัลกอริธึมที่เหมาะสมที่สุด (เช่นอัลกอริธึมที่ให้ผลลัพธ์ที่ดีที่สุด) ถ้ามีการเก็บรักษาในนั้นเช่นว่าแล้วเราสามารถโอนหนังสือทุกเล่มจากชั้นวางหิ้งและไม่ได้สร้างการเก็บรักษา จากนั้นคุณจะจบลงด้วยค่าใช้จ่ายที่น้อยลง (เนื่องจาก a. ค่าความหนาจะน้อยลงและคุณไม่จำเป็นต้องใช้ ) แต่ในสมมติฐานของเราเรามีอัลกอริธึมที่เหมาะสมที่สุดแล้วดังนั้นจึงไม่สามารถเก็บได้ ฉันหวังว่านี่จะทำให้คุณค่อนข้างชัดเจน! aCa>Ca+1aa+1aFa
jjohn

0

บางครั้งเพียง "ขยายภาพ" ใน "ปัญหาที่ใกล้ที่สุด" ในวรรณคดีสามารถช่วยให้เข้าใจทฤษฎีและพื้นหลังของปัญหาสร้างสิ่งที่เป็นนามธรรมและกำจัดรายละเอียดปลอม ปัญหาที่ใกล้ที่สุดในวรรณคดีของคุณน่าจะเป็นสิ่งที่เรียกว่า "ปัญหาการบรรจุถังขยะขนาดตัวแปร" ตัวอย่างเอกสารรวมอยู่ด้านล่าง ปัญหานี้ได้รับการศึกษาอย่างมากในเชิงทฤษฎีและมีซอฟแวร์นอกชั้นวางอยู่ปรากฏในการปรับกล่องบรรจุให้เหมาะสมเช่นภาชนะขนส่งรถบรรทุก นอกจากนี้ยังมีรุ่นที่หนึ่งสามารถปรับขนาดภาชนะ มีวิธีอัลกอริทึมมากมาย เช่นจากกระดาษ1 เซนต์ :

ปัญหาที่กล่าวถึงในบทความนี้คือการบรรจุหีบห่อสินค้าทรงสี่เหลี่ยมมุมฉากลงในถังขยะทรงสี่เหลี่ยมสามมิติจำนวนขั้นต่ำ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.