วิศวกรรมซอฟต์แวร์

ถาม - ตอบสำหรับมืออาชีพนักวิชาการและนักเรียนที่ทำงานในวงจรการพัฒนาระบบ

4
มีประโยชน์ใด ๆ ของการใช้ตัวแปรพิเศษนี้ในการทำหมายเหตุประกอบแบบลูปหรือไม่
ฉันได้พบคำอธิบายประกอบแบบวนรอบต่อไปนี้ในโครงการขนาดใหญ่ที่ฉันกำลังทำงาน (pseudocode): var someOtherArray = []; for (var i = 0, n = array.length; i < n; i++) { someOtherArray[i] = modifyObjetFromArray(array[i]); } สิ่งที่ทำให้ฉันสนใจคือตัวแปรพิเศษ "n" ฉันไม่เคยเห็น a lop เขียนในลักษณะนี้มาก่อน เห็นได้ชัดว่าในสถานการณ์นี้ไม่มีเหตุผลว่าทำไมโค้ดนี้ไม่สามารถเขียนได้ด้วยวิธีต่อไปนี้ (ซึ่งฉันคุ้นเคยมาก): var someOtherArray = []; for (var i = 0; i < array.length; i++) { someOtherArray[i] = modifyObjetFromArray(array[i]); } แต่มันทำให้ฉันคิด …

1
วิธีที่มีประสิทธิภาพในการแสดงตรรกะบอร์ดหกเหลี่ยมสำหรับเกมที่มีลักษณะเป็นหอยเป๋าฮื้อ
ฉันต้องติดตั้งเกม AI สำหรับAbaloneและฉันสงสัยว่าอะไรคือวิธีที่ดีที่สุดในการแสดงตรรกะบอร์ดโดยใช้ Java โดยไม่ต้องสิ้นเปลืองทรัพยากรมากเกินไปในการตรวจสอบและอัพเดทตามปกติ ใช้รายการต่าง ๆ ดีกว่าไหม? เมทริกซ์ของวัตถุเซลล์? ข้อเสนอแนะใด ๆ

2
เพราะเหตุใดคำหลัก 'out' จึงถูกใช้ในบริบทที่แตกต่างกันสองดูเหมือน
ใน C # outคำหลักสามารถใช้ได้สองวิธีที่ต่างกัน เป็นโมดิฟายเออร์พารามิเตอร์ที่อาร์กิวเมนต์ถูกส่งผ่านโดยการอ้างอิง class OutExample { static void Method(out int i) { i = 44; } static void Main() { int value; Method(out value); // value is now 44 } } ในฐานะที่เป็นตัวปรับแต่งพารามิเตอร์ชนิดเพื่อระบุความแปรปรวน // Covariant interface. interface ICovariant<out R> { } // Extending covariant interface. interface IExtCovariant<out R> : …

4
วิธีการส่วนตัวควรใช้เส้นทางสาธารณะในการเข้าถึงข้อมูลส่วนตัวเมื่อใด
วิธีการส่วนตัวควรใช้เส้นทางสาธารณะในการเข้าถึงข้อมูลส่วนตัวเมื่อใด ตัวอย่างเช่นถ้าฉันมีคลาส 'ตัวทวีคูณ' ที่ไม่เปลี่ยนรูปแบบ (มีการประดิษฐ์มาบ้างฉันรู้): class Multiplier { public: Multiplier(int a, int b) : a(a), b(b) { } int getA() const { return a; } int getB() const { return b; } int getProduct() const { /* ??? */ } private: int a, b; }; มีสองวิธีที่ฉันสามารถใช้getProduct: int getProduct() const { …

1
อะไรคือความหมายเชิงปฏิบัติของทฤษฎีประเภท homotopy ในการเขียนโปรแกรม?
ฉันเพิ่งเริ่มเรียนรู้ Haskell หลังจากมาจากโลก JavaScript / Ruby ฉันเจอhttps://github.com/HoTTและหนังสือHomotopy Type Theoryซึ่งฉันอยากอ่าน อย่างไรก็ตามฉันจะเรียนรู้แนวคิดเกี่ยวกับคณิตศาสตร์และทฤษฎีประเภทเมื่อฉันไปดังนั้นดูเหมือนว่ามันจะใช้เวลานานก่อนที่ฉันจะเข้าใจว่าทฤษฎีประเภท homotopy นั้นมีความหมายอย่างไรต่อโปรแกรมเมอร์ฝึกหัด คุณช่วยอธิบายได้ว่าทฤษฎีประเภท homotopy มีผลกระทบอย่างไรต่อการเขียนโปรแกรมในทางปฏิบัติสำหรับคนธรรมดา? ตัวอย่างเช่นจะทำให้การเขียนง่ายขึ้นไหม? ถ้าเป็นเช่นนั้นมีอะไรบ้าง? หรือจะอนุญาตให้คุณทำสิ่งใหม่ ๆ ในการเขียนโปรแกรมที่ไม่เคยมีมาก่อนหรือไม่? ถ้าเป็นเช่นนั้นมีอะไรบ้าง? ขอบคุณมากรอคอยที่จะห่อหัวของฉันไปรอบ ๆ ในระดับพื้นฐานมากขึ้น

2
การซิงโครไนซ์ระหว่างสองระบบโดยใช้ MongoDB เป็น changelog
เรากำลังพัฒนาสองระบบที่เกี่ยวข้อง หนึ่งในนั้น (A) จะถูกติดตั้งบนเครื่องของลูกค้าของเรา องค์กรของฉันจะใช้ส่วนที่เหลือ (B) แต่ละระบบมีฐานข้อมูลของตัวเอง (สัมพันธ์) และสกีมาของพวกเขาแตกต่างกัน อย่างไรก็ตามทั้งสองระบบจะต้องทำข้อมูลให้ตรงกัน นอกจากนี้การเปลี่ยนแปลงบางอย่างใน B จะต้องส่งออกไปยังระบบคลาส A ทั้งหมดและอื่น ๆ ไปยังการเปลี่ยนแปลงที่เฉพาะเจาะจง ลูกค้าบางรายไม่มีการเชื่อมต่ออินเทอร์เน็ตดังนั้นในบางกรณีต้องทำข้อมูลให้ตรงกันผ่านการแลกเปลี่ยนไฟล์ ดังนั้นเราจึงวางแผนที่จะแก้ไขปัญหานี้ดังต่อไปนี้: แต่ละระบบรักษาการเปลี่ยนแปลงของฐานข้อมูล เรากำลังวางแผนที่จะนำไปใช้กับ MongoDB เมื่อระบบเริ่มต้นกระบวนการซิงโครไนซ์ระบบจะดึงการเปลี่ยนแปลงที่ทำทั้งหมดจากบันทึก หากระบบเป็น B การเปลี่ยนแปลงที่ดึงมาขึ้นอยู่กับปลายทาง จากนั้นระบบจะจัดลำดับพวกเขาในรูปแบบ XML และในที่สุดก็ส่งพวกเขา (ผ่านไฟล์หรือเครือข่าย) เมื่อปลายทางอื่นได้รับเซ็ตการแก้ไขมันจะยกเลิกการตั้งค่า จากนั้นระบบจะทำการแปลงข้อมูลบางอย่างซึ่งจำเป็นและในที่สุดก็บันทึกการเปลี่ยนแปลง ในขั้นตอนนี้ถ้าจำเป็นระบบจะต้องแก้ไขข้อขัดแย้งที่อาจมีอยู่ ขั้นสุดท้ายระบบรับจะส่งการเปลี่ยนแปลง (และผลิตภัณฑ์อื่น ๆ ของการแก้ไขข้อขัดแย้ง) วิธีนี้เป็นไปได้ปรับขนาดได้และสง่างามหรือไม่? คุณต้องการเปลี่ยนแปลงหรือเพิ่มเติมสิ่งใด

5
ใครเป็นผู้เขียน 'เรื่องราวผู้ใช้งานทางเทคนิค' ในการต่อสู้
ฉันรู้ว่าเจ้าของผลิตภัณฑ์ควรเขียนเรื่องราวของผู้ใช้ในการต่อสู้ เรื่องราวของผู้ใช้อธิบายคุณลักษณะสำหรับผู้ใช้ แต่ใครจะอธิบายสิ่งที่จำเป็นต้องได้รับการพัฒนาทางเทคนิคและวิธีการที่จะต้องดำเนินการ และข้อมูลที่เก็บไว้เกี่ยวกับการต่อสู้นั้นอยู่ที่ไหน นั่นจะทำให้ฉันสนใจจริงๆ! ฉันเห็นการขาดความรู้จำนวนมากใน บริษัท ของเราเมื่อผู้พัฒนาเริ่มนำเรื่องราวมาใช้ แต่พวกเขาไม่รู้วิธีนำไปใช้จริง! ตัวอย่างเช่นพวกเขาต้องจัดการกับ COM COM ดั้งเดิมและไม่รู้ว่าจะจัดการอย่างไรหรือพวกเขาไม่มีทักษะทางเทคนิคกับ WPF / WEB หรืออะไรก็ตาม การต่อสู้ช่วยให้คนเริ่มเรื่องราวของผู้ใช้ได้อย่างไร
11 scrum 

2
ใน ASP.NET MVC โมเดลมุมมองควรมี ID หรือไม่?
เมื่อพัฒนาแอปพลิเคชัน ASP.NET MVC ที่อนุญาตให้อัปเดตโมเดลคุณต้องมีวิธีรู้วิธีนำโมเดลมุมมองที่อัปเดตและจับคู่กลับไปยังโมเดลที่ได้รับการอัปเดตในขณะนี้ ดูเหมือนจะมีวิธีการที่แตกต่างกันสองสามอย่างในการทำเช่นนี้และฉันสงสัยว่าสิ่งเหล่านี้ไม่เหมาะสมกับ MVC (เหมือนกับการมีตัวควบคุมที่เก็บข้อมูลของคุณซึ่งควรเป็นแบบจำลองไม่ใช่แบบ MVC ที่เหมาะสม) ทุกรุ่นที่ดูมีรหัส: ข้อดี ตรวจสอบให้แน่ใจเสมอว่าคุณสามารถจับคู่กับโมเดลของคุณได้ จุดด้อย คุณต้องระมัดระวังอย่างแท้จริงว่าไม่มีการเปลี่ยนแปลง ID ใด ๆ อีกคุณสามารถให้ผู้ใช้อัปเดตแถวที่ไม่ควรเข้าถึงได้ เฉพาะรุ่นมุมมองขั้นต่ำสุดเท่านั้นที่มี ID: ข้อดี จำเป็นต้องตรวจสอบน้อยกว่าเพื่อหลีกเลี่ยงผู้ใช้ที่อัปเดตข้อมูลที่ไม่ควรเข้าถึง จุดด้อย ยิ่งยากต่อการติดตามว่ามุมมองแบบใดตรงกับโมเดลใด คุณยังคงต้องตรวจสอบรุ่นที่มี ID บางรุ่นเพื่อให้แน่ใจว่าผู้ใช้ไม่ได้อัปเดตข้อมูลที่ไม่ควรเข้าถึง ไม่มีรุ่นที่มี ID: ข้อดี ไม่จำเป็นต้องตรวจสอบ ID เพื่อรับการปรับปรุง จุดด้อย คุณต้องละทิ้งการไร้สัญชาติ ดังนั้นฉันมีสองคำถาม ก่อนอื่นมีตัวเลือกที่ถูกต้อง / ไม่ถูกต้องหรือไม่? (ถ้าไม่นั่นหมายความว่าการเลือกเป็นเรื่องของความเห็นและความเห็นของคำถามที่สองเป็นไปตามและควรละเว้น) ประการที่สองหากมีตัวเลือกที่ถูกต้อง / ไม่ถูกต้องมันคืออะไร? เพื่อชี้แจงความคิดเห็นที่ฉันพูดคุยเมื่อคุณมีรูปแบบการดูที่เลียนแบบวัตถุฐานข้อมูลของคุณ คิดว่านี่: public class InvoiceViewModel //Does not …
11 mvc  asp.net-mvc 

1
แคลคูลัสλคืออะไร?
ฉันมีสิ่งที่ฉันจะเรียกคำถามปรัชญาเกี่ยวกับ calcul-แคลคูลัส เมื่อคุณสำรวจ calcul-แคลคูลัสคุณจะประหลาดใจเมื่อเห็นทุกสิ่งที่คุณทำได้ คุณสามารถกำหนดจำนวนเต็มการดำเนินการทางคณิตศาสตร์บูลีนคำสั่ง if-then-else ลูปฟังก์ชั่นวนซ้ำ ฯลฯ ฉันเชื่อว่ามันได้รับการพิสูจน์แล้วว่าคำนวณเสร็จสมบูรณ์ แต่ในอีกด้านหนึ่งถ้าคุณพิจารณาว่าคุณสามารถทำอะไรกับฟังก์ชั่นใน calcul-แคลคูลัสได้คุณจะรู้ว่าสิ่งเดียวที่คุณทำได้คือการให้อาหารมันฟังก์ชั่นและมันจะส่งกลับฟังก์ชันอื่น และกระบวนการนั้นไม่สิ้นสุด ดังนั้นคุณจะแยกผลลัพธ์จากการคำนวณได้อย่างไร fสมมติว่าผลที่ตามมาของการแสดงออกเป็นฟังก์ชั่น คุณต้องการตรวจสอบว่าfเป็นสิ่งที่คุณคาดหวังหรือไม่ คุณสามารถทดสอบได้ใช้ฟังก์ชั่นที่คุณรู้จักใช้มันและได้รับf gแต่การตรวจสอบgนั้นถูกต้องตอนนี้คุณต้องตรวจสอบสิ่งที่gทำ และคุณเริ่มต้นใหม่ทั้งหมด ดังนั้นวิธีที่คุณสามารถบอกอะไรเกี่ยวกับf? ฉันคิดว่าคุณสามารถแทนที่ฟังก์ชั่นทั้งหมดใน us-แคลคูลัสด้วยฟังก์ชั่นเดียว, ฟังก์ชั่นเอกลักษณ์I = λx.xและทุกอย่างยังคงทำงานตามที่อธิบายไว้ในλ-แคลคูลัส คริสตจักรตัวเลข3เมื่อได้รับfและผลตอบแทนx f(f(f(x)))แต่เนื่องจากfและxจะไม่สามารถจะส่งกลับ I นำไปใช้และยังให้ผลตอบแทน ดังนั้นตอบสนองความหมายของ “การบูลีน” และความต้องการ 2 ข้อโต้แย้งซึ่งจะเป็นและเพื่อให้ทั้งสอง booleans จะกลับมา แต่ละคนจะเทียบเท่ากับตัวตนแม้ว่าพวกเขาจะปฏิบัติตามคำจำกัดความของพวกเขาIIIIII3(λxy.x)(λxy.y)III ดังนั้นคุณจะสร้างความแตกต่างได้อย่างไร คุณแสดงให้เห็นว่า calcul-แคลคูลัสเกี่ยวข้องกับฟังก์ชันมากกว่าฟังก์ชันเดียวได้อย่างไร มีแนวคิดของตัวตนหรือไม่? คุณสามารถระบุฟังก์ชันได้ทันทีโดยไม่ทำการประเมินหรือไม่? ฉันเชื่อว่าได้รับการพิสูจน์แล้วว่าไม่มีวิธีทดสอบ 2 ฟังก์ชั่นเพื่อความเท่าเทียมกัน หรือ calcul-แคลคูลัสไม่เกี่ยวกับฟังก์ชั่น แต่เกี่ยวกับคำอธิบายอย่างเป็นทางการของสิ่งที่พวกเขาทำ? นั่นหมายถึงว่านิพจน์ not ไม่เพียง …

1
มีสัญญาอนุญาตครีเอทีฟคอมมอนส์สำหรับนโยบายความเป็นส่วนตัวหรือไม่
เมื่อเร็ว ๆ นี้ฉันได้อ่านการอ่านนโยบายความเป็นส่วนตัวที่คุณพบในหนึ่งปีจะใช้เวลา 76 วันทำงานและรู้สึกค่อนข้างตกใจว่ามันแย่ขนาดนั้น ดังนั้นฉันจึงคิดว่าจะปรับปรุงได้อย่างไร สัญญาอนุญาตครีเอทีฟคอมมอนส์ดีมากเพราะเป็นแบบแยกส่วน: CC: ระบุว่าเป็นสัญญาอนุญาตครีเอทีฟคอมมอนส์ [-BY]: แสดงที่มา [-NC]: ไม่ใช่เชิงพาณิชย์ [-ND]: ไม่มีอนุพันธ์ [-SA]: แบ่งปันกัน ฉันคิดว่าในที่สุดก็สามารถสร้างนโยบายความเป็นส่วนตัวแบบแยกส่วนได้ ในที่สุดนโยบายแบบตารางจะดีกว่า: ข้อมูลที่ได้รับ ข้อมูลที่คุณให้กับเรา: ชื่อเนื้อหาข้อมูลธุรกรรมที่ตั้งเพื่อน ข้อมูลที่รวบรวมเมื่อคุณใช้บริการ: ข้อมูลกิจกรรมไซต์, ข้อมูลการเข้าถึงอุปกรณ์และเบราว์เซอร์, ข้อมูลคุกกี้ บุคคลที่สาม: ... การใช้ข้อมูล จัดการบริการ ขายให้กับบุคคลที่สาม ติดต่อคุณ ... มีความพยายามใด ๆ ในการสร้างนโยบายความเป็นส่วนตัวแบบแยกส่วน / มีโครงสร้าง (ในที่สุดสามารถอ่านได้ด้วยเครื่อง) หรือไม่?
11 legal  privacy 

2
เข้าใกล้ SICP ใน Clojure แทน Scheme
ฉันเป็นนักศึกษาปริญญาตรีปีที่สามในโปรแกรมวิศวกรรมซอฟต์แวร์และฉันได้นำความคิดในการอ่าน SICP ไปยังที่ปรึกษาเพื่อให้ได้ความเข้าใจที่ลึกซึ้งและลึกซึ้งยิ่งขึ้นเกี่ยวกับหลักการที่อยู่เบื้องหลังซอฟต์แวร์ทั้งหมดที่เราออกแบบ เขาแนะนำว่าอย่าเรียนรู้ Scheme เพื่อทำให้หนังสือเล่มนี้สมบูรณ์ (เพราะมันไม่ใช่เรื่องธรรมดาเหมือนภาษาถิ่น Lisp) แต่ให้ทำแบบฝึกหัดใน Clojure แทน มันเป็นหนังสือที่ยากอยู่แล้วถ้าฉันลองทำแบบฝึกหัดของหนังสือเล่มนี้ใน Clojure ที่ทันสมัยกว่านี้มันจะได้ผลอย่างไร ตัวอย่างเช่นฉันไม่สามารถหาคำตอบที่แท้จริงได้ไวยากรณ์ที่พวกเขาสอนสำหรับ Scheme นั้นแตกต่างกัน ฯลฯ
11 clojure  scheme  sicp 

1
เป็นการดีที่จะใช้ NoStackTrace ใน scala หรือไม่
ฉันเจอNoStackTraceมิกซ์อินสำหรับข้อยกเว้นในงานกาลา มันเป็นการปฏิบัติที่ดีที่จะใช้หรือควรพิจารณาว่า "ภายใน" เพื่อสกาล่าและทิ้งไว้ตามลำพัง?
11 exceptions  scala 

5
ห้องสมุดแบบคงที่ C ขมวดคิ้วอยู่หรือไม่? [ปิด]
ปิด คำถามนี้เป็นคำถามความคิดเห็นตาม ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้สามารถตอบข้อเท็จจริงและการอ้างอิงได้โดยแก้ไขโพสต์นี้ ปิดให้บริการใน5 ปีที่ผ่านมา มี 2 ​​อาร์กิวเมนต์สำหรับการมีไลบรารีที่แบ่งใช้: ช่วยลดพื้นที่ดิสก์ เมื่อมีการอัปเดตไลบรารีที่ใช้ร่วมกันไบนารีทั้งหมดขึ้นอยู่กับว่าจะได้รับการอัปเดต มีข้อเสียเปรียบหนึ่งสำหรับไลบรารีที่แชร์: พวกเขา (สามารถ) แนะนำนรกพึ่งพา บนคอมพิวเตอร์เดสก์ท็อปข้อได้เปรียบอันดับหนึ่งไม่ได้ถืออีกต่อไปแล้ว การสูญเสียพื้นที่ดิสก์ไม่เป็นปัญหามากในทุกวันนี้ การมีไบนารีแบบคงที่จะช่วยให้เราจัดการผู้จัดการแพคเกจได้ดีขึ้น - ฉันหมายถึงนรกที่พึ่งพาได้จะเป็นอดีต การเพิ่มโปรแกรมจะเป็นการเพิ่มไบนารี ในที่สุดโฟลเดอร์ที่ให้มันจัดการกับไฟล์ การลบโปรแกรมจะเป็นการลบไฟล์นี้ พึ่งพา? ที่ไปแล้ว. ข้อได้เปรียบที่สองยังคงมีอยู่ แต่ฉันคิดว่าข้อดีของไบนารีคงที่ในคอมพิวเตอร์เดสก์ท็อปนั้นมีน้ำหนักมากกว่า ฉันหมายถึงแม้แต่ภาษาใหม่อย่าง Go ก็รวบรวมไบนารีทั้งหมดของพวกเขาทั้งๆที่มีข้อได้เปรียบของ shared library เพราะความสะดวก เนื่องจากข้อได้เปรียบหลักอย่างหนึ่งของไลบรารีที่ใช้ร่วมกันไม่ใช่เรื่องใหญ่อีกต่อไปแล้ว C นิ่งไลบรารียังคงขมวดคิ้วอยู่หรือไม่? ถ้าเป็นเช่นนั้นทำไม
11 c  compiler 

2
ความไม่สะดวกเกี่ยวกับการรวมใน SVN ก่อนหน้า v1.5 ล้าสมัยแล้วในขณะนี้หากไม่มีข้อมูลเมตาอีกต่อไป
ฉันเริ่มต้นกับ SVN และหลายแหล่งกล่าวว่าการรวมกันเป็นเรื่องยากมากใน SVN เมื่อเทียบกับเครื่องมือ DVCS คำถามล่าสุดที่ฉันสามารถหาที่นี่ใน SE มีจาก 2012 บางครั้งมีการกล่าวถึงเหตุผลที่ SVN ก่อนหน้า v1.5 ไม่มีข้อมูลเมตา แต่ SVN อยู่ในรุ่น 1.8.9 ในขณะนี้ ระบุว่า SVN นั้นเป็นผู้ใหญ่มากกว่า v1.5 และโดยเฉพาะอย่างยิ่งความจริงที่ว่าเราไม่ได้ใช้ SVN 1.5 ดังนั้นเราจึงไม่ต้องทนทุกข์ทรมานจากการขาดข้อมูลเมตาที่กล่าวถึง - ยังมีความถูกต้องมากในการโต้แย้งกับ SVN ฉันเข้าใจว่า DVCS มีวิธีที่แตกต่างอย่างสิ้นเชิงซึ่งมักเป็นที่ต้องการมากกว่า แต่สำหรับผู้ที่ "ต้อง" ues SVN ไม่ว่าด้วยเหตุผลใดก็ตามการรวมกันไม่ใช่ "นรก" จริง ๆ อีกแล้วใช่ไหม

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

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