ฉันกำลังพยายามหาว่าโครงสร้างข้อมูลชนิดใดที่จะใช้สำหรับการสร้างแบบจำลองการใช้งานเครือข่ายที่เป็นสมมุติฐานบางอย่าง
ในสถานการณ์สมมติของฉันจำนวนผู้ใช้ที่เป็นศัตรูกันกำลังพยายามสร้างเครือข่ายคอมพิวเตอร์ที่รู้จักการเชื่อมต่อที่อาจเกิดขึ้นทั้งหมด คอมพิวเตอร์ที่ผู้ใช้รายหนึ่งต้องการเชื่อมต่ออาจไม่เหมือนกับคอมพิวเตอร์ที่ผู้ใช้รายอื่นต้องการเชื่อมต่อ ผู้ใช้ 1 อาจต้องเชื่อมต่อคอมพิวเตอร์ A, B และ D ในขณะที่ผู้ใช้ 2 อาจต้องเชื่อมต่อคอมพิวเตอร์ B, C และ E
ภาพที่สร้างขึ้นด้วยความช่วยเหลือของผู้สร้างกราฟ NCTM
ฉันคิดว่าแก่นของเรื่องนี้จะเป็นกราฟวงจรที่ไม่ได้บอกทิศทางด้วยโหนดที่เป็นตัวแทนของคอมพิวเตอร์และขอบที่แสดงสายเคเบิลอีเทอร์เน็ต อย่างไรก็ตามเนื่องจากลักษณะของสถานการณ์มีคุณสมบัติแปลก ๆ บางอย่างที่แยกแยะรายการคำคุณศัพท์และเมทริกซ์ adjacency (อย่างน้อยโดยไม่มีการดัดแปลงที่ไม่สำคัญ):
- ขอบสามารถใช้งานได้อย่าง จำกัด กล่าวคือหากผู้ใช้รายหนึ่งได้รับการเชื่อมต่อเครือข่ายที่กำหนดไม่มีผู้ใช้รายอื่นที่สามารถใช้การเชื่อมต่อนั้นได้
- ในตัวอย่างผู้ใช้สีเขียวอาจไม่สามารถเชื่อมต่อกับคอมพิวเตอร์ A แต่ผู้ใช้สีแดงเชื่อมต่อ B ถึง E แม้ว่าจะไม่มีการเชื่อมโยงโดยตรงระหว่างพวกเขา
- ในบางกรณีคู่ของโหนดที่ระบุจะถูกเชื่อมต่อโดยมากกว่าหนึ่งขอบ
- ในตัวอย่างมีสายเคเบิลอิสระสองตัวที่รันจาก D ถึง E ดังนั้นผู้ใช้สีเขียวและสีน้ำเงินจึงสามารถเชื่อมต่อเครื่องเหล่านั้นได้โดยตรง อย่างไรก็ตามสีแดงไม่สามารถเชื่อมต่อได้อีกต่อไป
- หากคอมพิวเตอร์สองเครื่องเชื่อมต่อกันด้วยสายเคเบิลมากกว่าหนึ่งสายผู้ใช้แต่ละคนอาจเป็นเจ้าของได้ไม่เกินหนึ่งสาย
ฉันจะต้องดำเนินการหลายอย่างในกราฟนี้เช่น:
- ตรวจสอบว่ามีการเชื่อมต่อคอมพิวเตอร์คู่หนึ่งโดยเฉพาะสำหรับผู้ใช้ที่กำหนด
- ระบุเส้นทางที่ดีที่สุดสำหรับผู้ใช้ที่กำหนดเพื่อเชื่อมต่อคอมพิวเตอร์เป้าหมาย
- ระบุการเชื่อมต่อคอมพิวเตอร์ที่มีเวลาแฝงสูงสุดสำหรับผู้ใช้ที่กำหนด (เช่นเส้นทางที่ยาวที่สุดโดยไม่แยกสาขา)
ความคิดแรกของฉันคือการสร้างคอลเล็กชั่นทั้งหมดของขอบ แต่มันแย่มากสำหรับการค้นหา สิ่งที่ดีที่สุดที่ฉันคิดได้ตอนนี้คือการแก้ไขรายการ adjacency เพื่อให้แต่ละรายการในรายการไม่เพียง แต่มีความยาวของขอบ แต่ยังรวมถึงต้นทุนและเจ้าของปัจจุบัน นี่เป็นแนวทางที่สมเหตุสมผลหรือไม่? การสมมติว่าพื้นที่ไม่ใช่เรื่องที่น่ากังวลมันจะสมเหตุสมผลหรือไม่ที่จะสร้างสำเนาของกราฟจำนวนมาก (หนึ่งอันสำหรับผู้ใช้แต่ละคน) แทนที่จะเป็นกราฟเดียว?