หน้าแรก
หน้าแรก
Knuth Morris Pratt (KMP) เป็นอัลกอริทึมที่ตรวจสอบอักขระจากซ้ายไปขวา เมื่อรูปแบบมีรูปแบบย่อยปรากฏมากกว่าหนึ่งรูปแบบในรูปแบบย่อย จะใช้คุณสมบัตินั้นเพื่อปรับปรุงความซับซ้อนของเวลา รวมถึงในกรณีที่เลวร้ายที่สุด ความซับซ้อนของเวลาของ KMP คือ O(n) อินพุตและเอาต์พุต Input: Main String: “AAAABAAAAABBB
ในการค้นหาสตริงย่อยพาลินโดรมที่ยาวที่สุดจากสตริง เราสามารถใช้อัลกอริทึมของ Manacher โดยการเลือกอักขระแต่ละตัว เราจะพยายามค้นหาว่ามี palindrome ตัวใดที่ใช้ตัวชี้ซ้ายและขวา มีอาร์เรย์อื่นสำหรับเก็บข้อมูล จากข้อมูลนั้นเราสามารถค้นหา palindrome ได้อย่างง่ายดาย สำหรับอักขระแต่ละตัว อาร์เรย์จะเก็บข้อมูล ห
การค้นหารูปแบบที่ไร้เดียงสาเป็นวิธีที่ง่ายที่สุดในบรรดาอัลกอริธึมการค้นหารูปแบบอื่นๆ จะตรวจสอบอักขระทั้งหมดของสตริงหลักกับรูปแบบ อัลกอริทึมนี้มีประโยชน์สำหรับข้อความที่มีขนาดเล็กลง ไม่ต้องการขั้นตอนก่อนการประมวลผลใดๆ เราสามารถค้นหาสตริงย่อยได้โดยการตรวจสอบสตริงหนึ่งครั้ง นอกจากนี้ยังไม่ใช้พื้นที่เพิ
Rabin-Karp เป็นอัลกอริธึมการค้นหารูปแบบอื่นเพื่อค้นหารูปแบบอย่างมีประสิทธิภาพมากขึ้น นอกจากนี้ยังตรวจสอบรูปแบบโดยการย้ายหน้าต่างทีละรายการ แต่ไม่พบค่าแฮชโดยไม่ตรวจสอบอักขระทั้งหมดสำหรับทุกกรณี เมื่อค่าแฮชตรงกัน ระบบจะตรวจสอบเฉพาะอักขระแต่ละตัวเท่านั้น ขั้นตอนนี้ทำให้อัลกอริทึมมีประสิทธิภาพมากขึ้น ค
จากสตริงที่กำหนด เราจะได้ส่วนต่อท้ายที่เป็นไปได้ทั้งหมด หลังจากเรียงลำดับคำต่อท้ายในลำดับศัพท์แล้ว เราก็จะได้อาร์เรย์ส่วนต่อท้าย อาร์เรย์ต่อท้ายยังสามารถสร้างได้โดยใช้ทรีส่วนต่อท้าย โดยการใช้ DFS traversal ของ suffix tree เราจะได้ suffix arrays อาร์เรย์ต่อท้ายมีประโยชน์ในการค้นหาส่วนต่อท้ายในเวลาเชิ
จากข้อความ เราสามารถสร้างส่วนต่อท้ายทั้งหมดเพื่อสร้างโครงสร้างแบบต้นไม้ได้ เรารู้ว่าทุกรูปแบบที่นำเสนอในข้อความจะต้องเป็นคำนำหน้าของคำต่อท้ายที่เป็นไปได้ในข้อความ โดยการสร้าง Trie ของส่วนต่อท้ายทั้งหมด เราสามารถค้นหาสตริงย่อยใดๆ ในเวลาเชิงเส้น ทุกส่วนต่อท้ายลงท้ายด้วยสัญลักษณ์สิ้นสุดสตริง จากแต่ละโห
อัลกอริทึมนี้มีชื่อว่า Z Algorithm เพราะในอัลกอริทึมนี้ เราจำเป็นต้องสร้างอาร์เรย์ Z ขนาดของอาร์เรย์ Z เท่ากับขนาดข้อความ อาร์เรย์นี้ใช้เพื่อเก็บความยาวของสตริงย่อยที่ยาวที่สุดที่เป็นไปได้โดยเริ่มจากอักขระปัจจุบันของสตริงหลัก ในตอนแรก รูปแบบและข้อความหลักจะถูกเชื่อมด้วยสัญลักษณ์พิเศษซึ่งไม่มีอยู่ในข
ในกราฟที่ไม่ระบุทิศทาง เส้นทางแฮมิลตันคือเส้นทางที่เข้าชมแต่ละจุดยอดเพียงครั้งเดียว และวัฏจักรหรือวงจรแฮมิลตันเป็นเส้นทางแฮมิลตันที่มีขอบจากจุดยอดสุดท้าย ถึงจุดสุดยอดแรก ในปัญหานี้ เราจะพยายามตรวจสอบว่ากราฟประกอบด้วยวัฏจักรแฮมิลตันหรือไม่ และเมื่อมีวัฏจักรแฮมิลตัน ให้พิมพ์วงจรด้วย อินพุตและเอาต์พุต
มีกราฟเชื่อมต่อ G(V, E) และน้ำหนักหรือต้นทุนสำหรับทุกขอบ อัลกอริธึมของ Kruskal จะค้นหาต้นไม้ที่ทอดข้ามขั้นต่ำโดยใช้กราฟและต้นทุน เป็นแนวทางแบบผสานต้นไม้ ในขั้นต้น มีต้นไม้ที่แตกต่างกัน อัลกอริธึมนี้จะรวมเข้าด้วยกันโดยนำขอบที่มีต้นทุนต่ำที่สุดมารวมกันเป็นต้นไม้ต้นเดียว ในปัญหานี้ ขอบทั้งหมดจะแสดง
มีรายการเหรียญ C(c1, c2, ……Cn) ให้และมีค่า V ให้ด้วย ตอนนี้ปัญหาคือการใช้จำนวนเหรียญขั้นต่ำเพื่อสร้างโอกาส V. หมายเหตุ - สมมติว่ามีเหรียญนับไม่ถ้วน C ในปัญหานี้เราจะพิจารณาชุดของเหรียญที่แตกต่างกัน C{1, 2, 5, 10} มอบให้ มีเหรียญแต่ละประเภทเป็นอนันต์ ในการเปลี่ยนแปลงมูลค่าที่ร้องขอ เราจะพยายามใช้จ
รายการเวลาที่มาถึงและออกเดินทางจะได้รับ ตอนนี้ปัญหาอยู่ที่การหาจำนวนชานชาลาขั้นต่ำที่จำเป็นสำหรับทางรถไฟเนื่องจากไม่มีรถไฟคอยรอ โดยการเรียงลำดับเวลาทั้งหมดตามลำดับการเรียงลำดับ เราจะสามารถค้นหาวิธีแก้ปัญหาได้ง่าย มันจะง่ายต่อการติดตามเมื่อรถไฟมาถึงแต่ไม่ออกจากสถานี ความซับซ้อนของเวลาของปัญหานี้คือ
มีกราฟเชื่อมต่อ G(V, E) และน้ำหนักหรือต้นทุนสำหรับทุกขอบ อัลกอริธึมของ Prim จะค้นหาต้นไม้ที่ทอดข้ามขั้นต่ำจากกราฟ G เป็นแนวทางการปลูกต้นไม้ อัลกอริทึมนี้ต้องการค่าเมล็ดพันธุ์เพื่อเริ่มต้นทรี ยอดของเมล็ดโตจนเกิดเป็นต้นไม้ทั้งหมด ปัญหาจะได้รับการแก้ไขโดยใช้สองชุด ชุดหนึ่งถือโหนดที่เลือกไว้แล้ว แล
คล้ายกับอัลกอริธึมก่อนหน้า ข้อแตกต่างเพียงอย่างเดียวคือ กราฟ G(V, E) จะแสดงโดยรายการที่อยู่ติดกัน การแสดงรายการที่อยู่ติดกันความซับซ้อนของเวลาคือ O(E log V) อินพุตและเอาต์พุต Input: The cost matrix: Output: Edge: A--B And Cost: 1 Edge: B--E And Cost: 2 Edge: A--C And Cost: 3 Edge: A--D And Cost: 4
มีรายการของรายการ แต่ละรายการมีค่าและน้ำหนักของตัวเอง สามารถวางสิ่งของในเป้ที่น้ำหนักสูงสุดคือ W ปัญหาคือการหาน้ำหนักที่น้อยกว่าหรือเท่ากับ W และค่าจะถูกขยายให้ใหญ่สุด ปัญหาเป้มีสองประเภท 0 – 1 เป้ เป้เศษส่วน สำหรับเป้ 0 – 1 สิ่งของไม่สามารถแบ่งออกเป็นชิ้นเล็ก ๆ และสำหรับเป้เศษส่วน สิ่งของสามารถ
อัลกอริธึมนี้มีประโยชน์ในการค้นหาการเกิดขึ้นทั้งหมดของชุดคีย์เวิร์ดที่ระบุทั้งหมด เป็นอัลกอริธึมการจับคู่พจนานุกรมชนิดหนึ่ง ใช้โครงสร้างแบบต้นไม้โดยใช้คำสำคัญทั้งหมด หลังจากสร้างต้นไม้แล้ว มันพยายามแปลงต้นไม้ให้เป็นหุ่นยนต์เพื่อทำการค้นหาในเวลาเชิงเส้น Aho-Corasick Algorithm มีสามขั้นตอนที่แตกต่างกั
โดยพื้นฐานแล้วแอนนาแกรมเป็นการเรียงสับเปลี่ยนทั้งหมดของสตริงหรือรูปแบบที่กำหนด อัลกอริธึมการค้นหารูปแบบนี้แตกต่างกันเล็กน้อย ในกรณีนี้ ไม่ได้ค้นหาเฉพาะรูปแบบที่แน่นอนเท่านั้น แต่ยังค้นหาการจัดเรียงที่เป็นไปได้ทั้งหมดของรูปแบบที่ระบุในข้อความ เพื่อแก้ปัญหานี้ เราจะแบ่งข้อความทั้งหมดออกเป็นหลายหน้าต่
วิธีฮิวริสติกอักขระที่ไม่ดีเป็นหนึ่งในแนวทางของอัลกอริทึม Boyer Moore อีกวิธีหนึ่งคือ Good Suffix Heuristic ในวิธีนี้ เราจะพยายามค้นหาอักขระที่ไม่ถูกต้อง ซึ่งหมายถึงอักขระของสตริงหลักซึ่งไม่ตรงกับรูปแบบ เมื่อความไม่ตรงกันเกิดขึ้น เราจะเปลี่ยนรูปแบบทั้งหมดจนกว่ารูปแบบที่ไม่ตรงกันจะกลายเป็นการจับคู่ ม
เป็นอีกแนวทางหนึ่งของ Boyer Moore Algorithm บางครั้งเรียกว่า Good Suffix Heuristic method สำหรับกรณีนี้ ตารางการประมวลผลล่วงหน้าจะถูกสร้างขึ้นเป็นตารางส่วนต่อท้าย ในโพรซีเดอร์นี้ สตริงย่อยหรือรูปแบบจะถูกค้นหาจากอักขระตัวสุดท้ายของรูปแบบ เมื่อสตริงย่อยของสตริงหลักตรงกับสตริงย่อยของรูปแบบ สตริงย่อยจะย
เทคนิคการเรียงลำดับแบบด่วนทำได้โดยแยกรายการออกเป็นสองส่วน ในขั้นต้น องค์ประกอบเดือยจะถูกเลือกโดยอัลกอริทึมการแบ่งพาร์ติชัน ส่วนด้านซ้ายของเดือยถือค่าที่น้อยกว่าเดือยและส่วนขวาถือค่าที่มากกว่า หลังจากแบ่งพาร์ติชัน แต่ละรายการแยกกันจะถูกแบ่งพาร์ติชันโดยใช้ขั้นตอนเดียวกัน ความซับซ้อนของเทคนิค Quicksort
Radix sort เป็นอัลกอริธึมการเรียงลำดับแบบไม่เปรียบเทียบ อัลกอริธึมการเรียงลำดับนี้ทำงานบนคีย์จำนวนเต็มโดยการจัดกลุ่มตัวเลขซึ่งมีตำแหน่งและค่าเหมือนกัน ฐานเป็นฐานของระบบตัวเลข อย่างที่เราทราบดีว่าในระบบทศนิยม ฐานหรือฐานคือ 10 ดังนั้นสำหรับการจัดเรียงตัวเลขทศนิยม เราต้องใช้กล่องตำแหน่ง 10 ช่องเพื่อเก็