คำถามติดแท็ก algorithms

ในคณิตศาสตร์และวิทยาการคอมพิวเตอร์อัลกอริทึมเป็นวิธีที่มีประสิทธิภาพที่แสดงเป็นรายการ จำกัด ของคำแนะนำที่กำหนดไว้อย่างดีสำหรับการคำนวณฟังก์ชัน อัลกอริทึมที่ใช้สำหรับการคำนวณการประมวลผลข้อมูลและการใช้เหตุผลอัตโนมัติ

2
วิธีคำนวณการหมุนรูปได้อย่างมีประสิทธิภาพ
ฉันมีรูปที่แสดงผ่านเมทริกซ์ของไบต์ (เมทริกซ์บิตแมปเหมือน) ตัวอย่างรูปที่Picture 1ถูกแสดงบน เป้าหมายคือการหามุมการหมุนที่ดีที่สุดของให้บางรูป เมื่อรูปถูกหมุนด้วยมุมที่ดีที่สุดสี่เหลี่ยมที่ขนานกับแกน X และ Y และจารึกรูปที่มีพื้นที่ที่เล็กที่สุด รูปสี่เหลี่ยมที่จารึกรูปจะแสดงเป็นสีเทาอ่อนบนรูปภาพ ในการPicture 2, คุณจะเห็นว่าการหมุนในอุดมคติของรูปเป็นประมาณ 30 องศาตามเข็มนาฬิกา ทีนี้ฉันรู้ว่าอัลกอริธึมจะหามุมนี้อย่างไร แต่สำหรับฉันมันไม่มีประสิทธิภาพมาก มันจะเป็นเช่นนี้: วนมุมจาก 0 ถึง 45 สำหรับมุมปัจจุบันสำหรับทุกจุดตัวเลขให้คำนวณตำแหน่งใหม่หมุนได้ ค้นหาขอบเขตของสี่เหลี่ยมผืนผ้าที่มีรูป (ต่ำสุดและสูงสุด x, y) และลงทะเบียนถ้ามันเป็นการจับคู่ที่ดีที่สุด มุมถัดไป นี่เป็นวิธีการบังคับแบบเดรัจฉานและทำงานได้ดีและรวดเร็วสำหรับคนร่างเล็ก อย่างไรก็ตามฉันต้องทำงานกับตัวเลขที่มีมากถึง 10 ล้านคะแนนและอัลกอริทึมของฉันช้า อัลกอริทึมที่ดีสำหรับปัญหานี้คืออะไร

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

3
การใช้ตารางแฮชในการรวบรวมขยะจะช่วยแก้ปัญหาเครื่องหมายและการกวาดโลกหรือไม่
ในอัลกอริธึมการรวบรวมขยะที่มีขนาดกะทัดรัดคุณต้องหยุดโลกเมื่อต้องย้ายวัตถุเนื่องจากกราฟอ้างอิงไม่สอดคล้องกันและคุณต้องแทนที่ค่าของการอ้างอิงทั้งหมดที่ชี้ไปยังวัตถุ แต่จะเกิดอะไรขึ้นถ้าคุณมีตารางแฮชที่มี ID วัตถุเป็นคีย์และตัวชี้เป็นค่าและการอ้างอิงจะชี้ไปที่ ID ดังกล่าวแทนที่จะเป็นที่อยู่ของวัตถุ ... ดังนั้นการแก้ไขการอ้างอิงจะต้องเปลี่ยนค่าเดียวเท่านั้น พยายามเขียนลงในระหว่างการคัดลอก ... ความคิดของฉันมีข้อผิดพลาดหรือไม่?

6
ค้นหาว่าใครจะซื้อครัวซองต์ซึ่งคิดว่าหายไป
ต้องการปรับปรุงโพสต์นี้หรือไม่? ให้คำตอบโดยละเอียดสำหรับคำถามนี้รวมถึงการอ้างอิงและคำอธิบายว่าทำไมคำตอบของคุณถึงถูกต้อง คำตอบที่ไม่มีรายละเอียดเพียงพออาจแก้ไขหรือลบออกได้ ทีมได้ตัดสินใจแล้วว่าทุกคนควรนำครัวซองต์มาให้ทุกคน ไม่ควรเป็นคนคนเดียวกันทุกครั้งดังนั้นควรมีระบบในการพิจารณาว่าใครเป็นเทิร์นถัดไป วัตถุประสงค์ของคำถามนี้คือการกำหนดอัลกอริทึมสำหรับการตัดสินใจว่าใครจะเป็นผู้เปิดครัวซองต์ในวันพรุ่งนี้ ข้อ จำกัด สมมติฐานและวัตถุประสงค์: ที่เปิดก็จะนำครัวซองต์จะถูกกำหนดในช่วงบ่ายก่อนหน้า ในบางวันบางคนไม่อยู่ อัลกอริทึมต้องเลือกใครบางคนที่จะนำเสนอในวันนั้น สมมติว่าการขาดทั้งหมดเป็นที่ทราบล่วงหน้าหนึ่งวันดังนั้นผู้ซื้อครัวซองต์สามารถถูกกำหนดในช่วงบ่ายก่อนหน้า โดยรวมแล้วคนส่วนใหญ่อยู่ในเกือบทุกวัน เพื่อผลประโยชน์ของความเป็นธรรมทุกคนควรซื้อครัวซองต์หลายครั้ง (โดยทั่วไปสมมติว่าสมาชิกทุกคนในทีมมีจำนวนเงินเท่ากันสำหรับการใช้จ่ายกับครัวซองต์) มันจะดีถ้ามีองค์ประกอบของการสุ่มหรือการรับรู้อย่างน้อยที่สุดเพื่อที่จะบรรเทาความเบื่อของบัญชีรายชื่อ นี่ไม่ใช่ข้อ จำกัด อย่างหนัก: มันเป็นการตัดสินใจเชิงสุนทรียะมากกว่า อย่างไรก็ตามบุคคลเดียวกันไม่ควรเลือกสองครั้งติดต่อกัน บุคคลที่นำครัวซองต์มาด้วยควรทราบล่วงหน้า ดังนั้นหากบุคคล P ต้องนำครัวซองต์ในวันที่ D ดังนั้นความจริงข้อนี้ควรถูกกำหนดในวันก่อนหน้าซึ่งมีบุคคล P อยู่ด้วย ตัวอย่างเช่นหากพนักงานเก็บเงินตัวสำรองถูกกำหนดวันก่อนเสมอควรเป็นหนึ่งในบุคคลที่เข้าร่วมเมื่อวานนี้ จำนวนสมาชิกในทีมมีขนาดเล็กเพียงพอที่ทรัพยากรการจัดเก็บและการคำนวณมีไม่ จำกัด อย่างมีประสิทธิภาพ ตัวอย่างเช่นอัลกอริทึมสามารถพึ่งพาประวัติที่สมบูรณ์ของผู้ที่นำครัวซองต์เมื่อในอดีต การคำนวณบนพีซีที่รวดเร็วเพียงไม่กี่นาทีทุกวันก็โอเค นี่เป็นรูปแบบของปัญหาในโลกแห่งความเป็นจริงดังนั้นคุณมีอิสระที่จะท้าทายหรือปรับแต่งสมมติฐานหากคุณคิดว่าพวกเขาทำแบบจำลองสถานการณ์ได้ดีขึ้น จุดกำเนิด 1: ค้นหาว่าใครกำลังจะซื้อครัวซองต์โดย Florian Margaine จุดกำเนิด 2: ค้นหาว่าใครกำลังจะซื้อครัวซองต์โดยกิลส์ คำถามนี้เป็นรุ่นเดียวกับ Gilles และได้รับการโพสต์ใหม่ในโปรแกรมเมอร์เพื่อทดสอบว่าชุมชนต่าง ๆ จัดการกับปัญหาการเขียนโปรแกรมอย่างไร

3
เริ่มต้นอาร์เรย์ในเวลาคงที่ที่ตัดจำหน่ายแล้ว - กลวิธีนี้เรียกว่าอะไร?
มีโครงสร้างข้อมูลนี้ที่แลกเปลี่ยนประสิทธิภาพของการเข้าถึงอาเรย์กับความต้องการที่จะวนซ้ำมันเมื่อล้างมัน คุณเก็บตัวนับรุ่นกับแต่ละรายการและตัวนับรุ่นสากล การดำเนินการ "ล้าง" เพิ่มตัวนับการสร้าง ในการเข้าถึงแต่ละครั้งคุณจะเปรียบเทียบตัวนับรุ่นเทียบกับระดับโลก หากพวกเขาแตกต่างกันค่าจะถือว่าเป็น "สะอาด" คำตอบนี้เกิดขึ้นในStack Overflowเมื่อเร็ว ๆ นี้ แต่ฉันจำไม่ได้ว่าเคล็ดลับนี้มีชื่ออย่างเป็นทางการหรือไม่ ทำมัน? กรณีใช้งานอย่างหนึ่งคืออัลกอริธึมของ Dijkstraหากมีเพียงส่วนย่อยของโหนดที่จะต้องผ่อนคลายและหากต้องทำซ้ำ ๆ

6
ปัญหาการเขียนโปรแกรมปัญหาปัญหาอัลกอริทึมทั้งหมดหรือไม่ [ปิด]
ปิด คำถามนี้จะต้องมีมากขึ้นมุ่งเน้น ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้มุ่งเน้นที่ปัญหาเดียวโดยแก้ไขโพสต์นี้ ปิดให้บริการใน5 ปีที่ผ่านมา ฉันชอบวิธี "รู้เบื้องต้นเกี่ยวกับอัลกอริทึม" โดย Cormen และคณะ ถ่ายทอดความรู้ เหตุผลหนึ่งคือทุกอย่างเกี่ยวกับปัญหาการเขียนโปรแกรมและหนังสือไม่ได้ถูกนำไปใช้ในภาษาโปรแกรมเฉพาะ ความเป็นอิสระด้านภาษานี้ให้ความสำคัญกับแนวคิดโดยทั่วไป ดังนั้นคำถามของฉันคือตามที่ระบุไว้ในชื่อเรื่อง ทุกปัญหาการเขียนโปรแกรมแก้ไขได้แก้ปัญหาได้โดยการคิดในแบบอัลกอริทึมนี้ ไม่ว่าจะเป็นภาษาฟิลด์ ฯลฯ ถ้าใช่ให้ข้อโต้แย้งอื่นให้ข้อโต้แย้ง! ฉันไม่ได้ใช้โปรแกรมที่ซับซ้อนมากมายกับ GUI, AI, กราฟิกและอื่น ๆ แต่ปัญหาเหล่านี้เป็นปัญหาของการคิดอัลกอริทึมที่ดีหรือไม่?
13 algorithms 

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

4
แนวคิดการค้นหาฐานข้อมูลคลุมเครือ
ฉันคิดเกี่ยวกับเรื่องนี้และพยายามหาวิธีแก้ปัญหาเกี่ยวกับวิธีการค้นหาฐานข้อมูลที่คลุมเครือหากผู้ใช้พิมพ์ตัวอย่างการสะกดผิด มีปัญหาอะไรที่จ้องมองด้วยตรรกะที่อยู่เบื้องหลังสิ่งนี้? มันจะทำงานและเคยทำมาก่อนหรือไม่ ตารางเราต้องการค้นหา: **tblArticles** Body - Soundex_Body - CharacterCoded_Body ดังนั้นเราจึงจัดเก็บเนื้อหาข้อความดิบสำหรับการแสดงผลทางกายภาพ อีก 2 คอลัมน์ใช้สำหรับการค้นหาซึ่งคำนวณล่วงหน้าด้วยวิธีต่อไปนี้: Soundex ร่างกายแบ่งออกเป็นคำพูดและแปลเป็นเวอร์ชั่นซาวด์ IE เนื้อหาที่ได้อาจเป็นดังนี้: H252 B54 C23 E33... etc ดังนั้นบางคนอาจเข้าสู่ 'dinosore' และเนื้อหาของบทความอ่านว่า 'ไดโนเสาร์' สิ่งเหล่านี้ทั้งคู่ประเมินเป็น 26 บาท จากนั้นเราจะเรียกใช้ LIKE บนค่า soundex ของข้อความค้นหา รหัสตัวละคร รับการทำแผนที่ตัวละครที่แมปตัวอักษรกับตัวเลขสำคัญ IE: h = 2 e = 3 l = 5 o = 7 …

2
ฉันควรพิจารณาอัลกอริธึมทางลัดที่สั้นที่สุดของ k ใด
ฉันกำลังแก้ไขปัญหาการเพิ่มประสิทธิภาพการค้นหากราฟ ฉันต้องการค้นหาเส้นทางลัดที่สั้นที่สุดที่ k ที่สุดผ่านกราฟถ่วงน้ำหนักกำกับ ฉันรู้ว่ามีจำนวนอัลกอริธึมที่แน่นอนและใกล้เคียงที่สุดสำหรับ k แต่งานวิจัยเมื่อไม่นานมานี้ส่วนใหญ่ดูเหมือนจะมุ่งเน้นไปที่กราฟขนาดใหญ่มากที่เชื่อมโยงกันอย่างกระจัดกระจาย (เช่นการกำหนดเส้นทางและทิศทาง) และกราฟของฉัน ลักษณะที่แตกต่างของปัญหาของฉัน: กราฟประกอบด้วยจุดยอดประมาณ 160 จุด กราฟเชื่อมต่อเกือบเต็มแล้ว (แบบสองทิศทางดังนั้น ~ 160 ^ 2 ~ = 25k ขอบ) k จะค่อนข้างเล็ก (อาจน้อยกว่า 10) ความยาวเส้นทางสูงสุดอาจถูกล้อมรอบและมีขนาดเล็กมากเช่น 3-5 ขอบ ฉันพูดว่า 'acyclic' ด้านบน แต่เพียงเพื่อย้ำ - การแก้ปัญหาต้องไม่รวมรอบ นี่ไม่ใช่ปัญหาสำหรับเส้นทางที่สั้นที่สุดที่ดีที่สุด แต่จะกลายเป็นปัญหาสำหรับ k-best ตัวอย่างเช่นพิจารณาการกำหนดเส้นทางถนนเส้นทางที่สั้นที่สุดอันดับที่ 2 จาก A ถึง B อาจเหมือนกับเส้นทางที่ดีที่สุด การเดินทางรอบ ๆ บล็อกอย่างรวดเร็ว นั่นอาจจะเป็นทางคณิตศาสตร์ที่ดีที่สุด …
13 java  algorithms 

2
การวิเคราะห์ค่าตัดจำหน่าย? (การรับประกันประสิทธิภาพที่แย่ที่สุด)
การวิเคราะห์ค่าตัดจำหน่ายคืออะไร? และจะช่วยให้ฉันบรรลุผลการปฏิบัติงานที่เลวร้ายที่สุดในโปรแกรมของฉันได้อย่างไร? ฉันกำลังอ่านว่าเทคนิคต่อไปนี้สามารถช่วยโปรแกรมเมอร์ให้รับประกันประสิทธิภาพที่แย่ที่สุด (เช่นในคำพูดของฉันเอง: รับประกันว่าเวลาทำงานของโปรแกรมจะไม่เกินเวลาทำงานในระยะเวลาที่เลวร้ายที่สุด): อัลกอริธึมแบบสุ่ม (เช่นอัลกอริธึม quicksort เป็นกำลังสองในกรณีที่เลวร้ายที่สุด แต่การเรียงลำดับแบบสุ่มอินพุตให้การรับประกันความน่าจะเป็นว่าเวลาการทำงานของมันคือ linearithmic) ลำดับของการดำเนินการ (การวิเคราะห์ของเราต้องคำนึงถึงทั้งข้อมูลและลำดับของการดำเนินการที่ดำเนินการโดยลูกค้า) การวิเคราะห์ค่าตัดจำหน่าย (อีกวิธีหนึ่งในการรับประกันประสิทธิภาพคือการตัดจำหน่ายต้นทุนโดยการติดตามค่าใช้จ่ายทั้งหมดของการดำเนินงานทั้งหมดหารด้วยจำนวนการปฏิบัติงานในการตั้งค่านี้เราสามารถอนุญาตการดำเนินการบางอย่างที่มีราคาแพง ของการดำเนินการต่ำกล่าวอีกนัยหนึ่งเรากระจายค่าใช้จ่ายของการดำเนินการที่มีราคาแพงเพียงไม่กี่แห่งโดยมอบหมายส่วนหนึ่งให้กับการดำเนินการที่ไม่แพงจำนวนมาก) ผู้เขียนกล่าวถึงการใช้การปรับขนาดโครงสร้างข้อมูลอาร์เรย์สำหรับ Stackเป็นตัวอย่างหนึ่งของวิธีการวิเคราะห์ค่าตัดจำหน่าย แต่ฉันยังไม่เข้าใจว่าการวิเคราะห์ค่าตัดจำหน่ายคืออะไรและสามารถนำไปใช้จริงได้อย่างไร (โครงสร้างข้อมูล? อัลกอริทึม?) - รับประกันประสิทธิภาพการออกอากาศ

3
เส้นทางการสั่งซื้อล่วงหน้าเหมือนกับการค้นหาลึกครั้งแรกหรือไม่
ดูเหมือนว่าฉันชอบการสำรวจเส้นทางการสั่งซื้อล่วงหน้าและ DFS เหมือนกันทั้งสองกรณีที่เราสำรวจจากรูทจนถึงสาขาซ้ายและกลับไปที่รูทจากนั้นไปยังสาขาที่ถูกเรียกซ้ำ โปรดแก้ไขให้ฉันได้ไหมถ้าฉันผิด? ขอบคุณล่วงหน้า!

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

1
อัลกอริทึมสำหรับการนั่ง Zoombinis บนเรือข้ามฟากของกัปตันคาจันหรือไม่
ฉันเพิ่งเล่นเกมThe Logical Journey of the Zoombinisเมื่อไม่นานมานี้และพยายามใช้อัลกอริธึมคอมพิวเตอร์บางอย่างที่สามารถไขปริศนาต่าง ๆ ได้ ฉันติดอยู่กับวิธีเข้าหาปริศนาเรือข้ามฟากของกัปตันคาจุน สำหรับผู้ที่ไม่คุ้นเคย Zoombini เป็นสิ่งมีชีวิตที่มี 4 คุณลักษณะ: ผม, ตา, จมูกและเท้า แต่ละแอตทริบิวต์เหล่านั้นมี 5 ค่าที่เป็นไปได้ ตัวอย่างเช่นเท้าของ Zoombini สามารถเป็นล้อโรลเลอร์สเกตรองเท้าผ้าใบสปริงหรือใบพัด นี่คือตัวอย่างของ Zoombini ที่มีผมยุ่งแว่นตาจมูกสีเขียวและรองเท้าผ้าใบ: ในจิ๊กซอว์แพขนานยนต์ภารกิจคือการจัดคอลเลคชั่น 16 Zoombinis บนที่นั่ง 16 ที่นั่งของเรือข้ามฟาก ข้อตกลงดังกล่าวจะต้องปฏิบัติตามกฎว่าจะต้องมี Zoombinis ซึ่งมีที่นั่งอย่างน้อยหนึ่งที่นั่งที่อยู่ติดกัน หาก Zoombinis สองคนมีผมที่แตกต่างกันดวงตาที่แตกต่างกันจมูกที่แตกต่างกันและเท้าที่แตกต่างจากกันพวกเขาอาจไม่ได้อยู่ติดกัน การจัดเรียงที่นั่งเปลี่ยนแปลงตามระดับ เพื่อความเป็นรูปเป็นร่างเรามามุ่งเน้นที่ระดับ "ยากมาก" ซึ่งมี 16 ที่นั่งที่จัดเรียงในตาราง 4-by-4 นี่คือตัวอย่างที่ 15 Zoombinis ถูกกฎหมายนั่ง แต่ …
12 algorithms 

1
วิธีการเรียนรู้แบบ Heuristic สำหรับการนำ DIFF แบบยืดหยุ่นมาใช้
ฉันได้สร้างการใช้ DIFF เพื่อเปรียบเทียบการแก้ไขเอกสารในที่ทำงาน มันขึ้นอยู่กับมี O (ND) ความแตกต่างขั้นตอนวิธีการและรูปแบบของมัน สิ่งหนึ่งที่มีความสำคัญคือการบันทึกรายการการเปลี่ยนแปลงและตีความให้เป็นข้อความที่มนุษย์อ่านได้ ในขณะที่อัลกอริทึมในปัจจุบันมีประสิทธิภาพมากมันก็มากจนยากที่จะขยาย คำถามสั้น ๆ ฉันคิดถึงการพยายามใช้ A * และฮิวริสติกที่เพิ่มบทลงโทษสำหรับ "การเปลี่ยน" แนวคิดที่จะทำให้เรียบโดยไม่จำเป็น "เพิ่มลบเพิ่มลบเพิ่มลบ" เพื่อให้ง่ายต่อการแยกวิเคราะห์เป็นสิ่งที่มนุษย์สามารถอ่านได้ โดยทั่วไปเปลี่ยนปัญหาเส้นทางที่สั้นที่สุดของฉันให้เป็นปัญหาเส้นทางที่ง่ายที่สุด และแน่นอนไม่สร้างผลลัพธ์ที่ "ลบทุกอย่างเพิ่มทุกอย่าง " เสมอ เสียงนี้สมเหตุสมผลหรือไม่ มีความสำคัญสำหรับการใช้ฮิวริสติกในการนำ DIFF ไปใช้หรือไม่? ฮิวริสติกคืออะไร? ปัญหา: หากมีการลบประโยคยาวและประโยคยาวอื่นถูกลบออก แต่พวกเขาแบ่งปันอย่างน้อยหนึ่งคำให้พูดว่า "with" การออกจากคำทั่วไปเพียงอย่างเดียว (ไม่ใช่ทั้งการเพิ่มและการลบ) จะเป็นการสร้างเส้นทางที่สั้นที่สุด อย่างไรก็ตามนี่เป็นเพียงแค่ทำให้งงงวยบริบทของการเปลี่ยนแปลงกับมนุษย์พยายามอ่านพิมพ์จากการเปลี่ยนแปลง ตัวอย่างด้วย DIFF ปัจจุบัน: ข้อความเก่า: สะอาด: Powerwash และเป่าให้แห้งด้วยอากาศในร้าน ข้อความใหม่: ล้าง: เช็ดด้วยอะซิโตนและผ้าสำลีฟรี เปลี่ยนรายการบันทึกย่อ: เปลี่ยน "Powerwash …

2
การเขียนโปรแกรมการทำงานและอัลกอริทึม stateful
ฉันเรียนรู้การเขียนโปรแกรมการทำงานที่มีHaskell ในขณะเดียวกันฉันกำลังศึกษาทฤษฎีออโตมาตาและในขณะที่ทั้งสองดูเหมือนจะเข้ากันได้ดีฉันจึงเขียนห้องสมุดเล็ก ๆ เพื่อเล่นกับออโตมาตะ นี่คือปัญหาที่ทำให้ฉันถามคำถาม ในขณะที่ศึกษาวิธีประเมินความสามารถในการเข้าถึงของรัฐฉันได้รับแนวคิดว่าอัลกอริทึมแบบเรียกซ้ำง่าย ๆ จะไม่มีประสิทธิภาพมากนักเนื่องจากบางเส้นทางอาจแบ่งปันบางสถานะและฉันอาจจบการประเมินมากกว่าหนึ่งครั้ง ตัวอย่างเช่นที่นี่การประเมินความสามารถในการเข้าถึงของgจากaฉันต้องแยกfทั้งสองขณะตรวจสอบเส้นทางผ่านdและc : ดังนั้นความคิดของฉันก็คืออัลกอริทึมทำงานแบบขนานบนหลาย ๆ พา ธ และอัปเดตบันทึกที่แชร์ของรัฐที่ถูกแยกอาจจะดี แต่นั่นก็มากเกินไปสำหรับฉัน ฉันเคยเห็นว่าในกรณีการเรียกซ้ำง่าย ๆ บางครั้งเราสามารถผ่านสถานะเป็นอาร์กิวเมนต์และนั่นคือสิ่งที่ฉันต้องทำที่นี่เพราะฉันส่งต่อรายชื่อของรัฐที่ฉันได้ผ่านเพื่อหลีกเลี่ยงการวนซ้ำ แต่มีวิธีที่จะส่งผ่านรายการนั้นย้อนกลับเช่นกลับใน tuple พร้อมกับผลบูลีนของcanReachฟังก์ชั่นของฉันได้อย่างไร (แม้ว่าจะรู้สึกว่าถูกบังคับเล็กน้อย) นอกจากความถูกต้องของตัวอย่างคดีของฉันแล้วยังมีเทคนิคอื่นใดอีกบ้างที่สามารถใช้แก้ปัญหาแบบนี้ได้อีก? ฉันรู้สึกเหมือนเหล่านี้จะต้องมากพอที่พบว่ามีจะต้องมีการแก้ปัญหาเช่นสิ่งที่เกิดขึ้นด้วยหรือfold*map จนถึงตอนนี้การอ่านlearnyouahaskell.comฉันยังไม่พบอะไรเลย แต่ลองคิดดูว่าฉันยังไม่ได้แตะพระเลย ( ถ้าสนใจฉันโพสต์รหัสของฉันในcodereview )

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