ประเภทของกราฟในโครงสร้างข้อมูลพร้อมตัวอย่าง

ประเภทของกราฟในโครงสร้างข้อมูล

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

กราฟสามารถมีได้หลายประเภท ขึ้นอยู่กับตำแหน่งของโหนดและขอบ ต่อไปนี้เป็นกราฟประเภทที่สำคัญบางส่วน:

กราฟกำกับ

ขอบของกราฟที่มีทิศทางมีลูกศรที่หมายถึงทิศทาง ลูกศรจะกำหนดตำแหน่งที่ขอบชี้ไปหรือสิ้นสุด

นี่คือตัวอย่างของกราฟกำกับ

กราฟกำกับ
กราฟกำกับ
  • เราสามารถไปจากโหนด A ถึง D
  • อย่างไรก็ตาม เราไม่สามารถไปจากโหนด D ไปยังโหนด A ได้ เนื่องจากขอบจะชี้จาก A ถึง D
  • เนื่องจากกราฟไม่มีน้ำหนัก การเดินทางจากจุดยอด A ถึง D จะมีราคาเท่ากับการเดินทางจาก D ถึง F

กราฟไม่มีทิศทาง

กราฟที่ไม่มีทิศทางมีขอบที่ไม่มีตัวชี้ หมายความว่าเราสามารถเดินทางกลับกันระหว่างจุดยอดสองจุดได้

นี่คือตัวอย่างง่ายๆ ของกราฟที่ไม่มีทิศทาง

กราฟไม่มีทิศทาง
กราฟไม่มีทิศทาง

ในกราฟด้านบน

  • เราสามารถย้ายจาก A ไป B ได้
  • เรายังย้ายจาก B ไป A ได้ด้วย
  • ขอบไม่มีทิศทาง

เป็นตัวอย่างของกราฟไร้ทิศทางซึ่งมีจุดยอดและขอบจำนวนจำกัดโดยไม่มีน้ำหนัก

กราฟถ่วงน้ำหนัก

กราฟที่มีน้ำหนักหรือต้นทุนบนขอบเรียกว่ากราฟถ่วงน้ำหนัก โดยทั่วไปค่าตัวเลขจะแสดงถึงต้นทุนการเคลื่อนย้ายจากจุดยอดหนึ่งไปยังอีกจุดหนึ่ง กราฟทั้งแบบมีทิศทางและแบบไม่มีทิศทางสามารถมีน้ำหนักบนขอบของมันได้

นี่คือตัวอย่างกราฟถ่วงน้ำหนัก (Directed)

กราฟกำกับพร้อมน้ำหนัก
กำกับกราฟพร้อมน้ำหนัก
  • A ไป B มีขอบ และน้ำหนักคือ 5 ซึ่งหมายความว่าการย้ายจาก A ไป B จะทำให้เราใช้เงิน 5
  • ชี้ไปที่ B แต่ในกราฟนี้ B ไม่มีขอบเขตตรงเหนือ A ดังนั้นเราจึงเดินทางจาก B ไป A ไม่ได้
  • อย่างไรก็ตาม หากเราต้องการย้ายจาก A ไป F ก็มีหลายเส้นทาง เส้นทางคือ ADF, ABF ADF จะมีราคา (10+11) หรือ 21
  • ที่นี่ เส้นทาง ABF จะมีราคา (5+15) หรือ 20 ที่นี่เราจะเพิ่มน้ำหนักของแต่ละขอบในเส้นทาง

ต่อไปนี้คือตัวอย่างกราฟแบบไม่มีทิศทางที่มีน้ำหนัก:

กราฟที่ไม่ได้กำหนดทิศทางพร้อมน้ำหนัก
กราฟที่ไม่มีทิศทางพร้อมน้ำหนัก

ตรงนี้ขอบมีน้ำหนักแต่ไม่มีทิศทาง หมายความว่าการเดินทางจากจุดยอด A ไปยัง D มีค่าใช้จ่าย 10 และในทางกลับกัน

กราฟสองทิศทาง

กราฟสองทิศทางและกราฟไม่มีทิศทางมีคุณสมบัติร่วมกัน นั่นคือ

  • โดยทั่วไป กราฟที่ไม่มีทิศทางสามารถมีขอบด้านเดียวระหว่างจุดยอดสองจุดได้

ตัวอย่างเช่น:

กราฟสองทิศทาง

  • ที่นี่ การย้ายจาก A ไป D หรือ D ไป A จะมีราคา 10
  • ในกราฟแบบสองทิศทาง เราสามารถมีขอบสองด้านระหว่างจุดยอดสองจุดได้

นี่คือตัวอย่าง:

กราฟสองทิศทาง
กราฟสองทิศทาง

การเดินทางจาก A ไป D มีค่าใช้จ่าย 17 บาท แต่การเดินทางจาก D ไปยัง A มีค่าใช้จ่าย 12 บาท ดังนั้นเราจึงไม่สามารถกำหนดน้ำหนักที่แตกต่างกันสองค่าได้หากเป็นกราฟที่ไม่มีทิศทาง

กราฟไม่มีที่สิ้นสุด

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

นี่คือตัวอย่างของกราฟอนันต์:

กราฟไม่มีที่สิ้นสุด
กราฟไม่มีที่สิ้นสุด

กราฟว่าง

Null Graph มีเพียงโหนดหรือจุดยอด แต่ไม่มีขอบ หากให้กราฟ G = (V, E) โดยที่ V คือจุดยอดและ E คือขอบ มันจะเป็นโมฆะหากจำนวนขอบ E เป็นศูนย์

นี่คือตัวอย่างของกราฟ Null:

กราฟว่าง
กราฟว่าง

กราฟเล็กน้อย

โครงสร้างข้อมูลกราฟถือเป็นเรื่องเล็กน้อยหากมีจุดยอดหรือโหนดเพียงจุดเดียวโดยไม่มีขอบ

นี่คือตัวอย่างกราฟเล็กน้อย:

กราฟเล็กน้อย

มัลติกราฟ

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

นี่คือตัวอย่างของ Multi Graph:

มัลติกราฟ

มีขอบสองด้านตั้งแต่ B ถึง A นอกจากนี้ จุดยอด E ยังมีการวนซ้ำในตัวเอง กราฟด้านบนเป็นกราฟกำกับที่ไม่มีน้ำหนักบนขอบ

กราฟที่สมบูรณ์

กราฟจะสมบูรณ์หากจุดยอดแต่ละจุดมีขอบกำกับหรือไม่มีทิศทางกับจุดยอดอื่นๆ ทั้งหมด

สมมติว่ามีจำนวนจุดยอด V ทั้งหมด และแต่ละจุดยอดมีขอบ V-1 พอดี จากนั้นกราฟนี้จะเรียกว่ากราฟที่สมบูรณ์ ในกราฟประเภทนี้ แต่ละจุดยอดจะเชื่อมต่อกับจุดยอดอื่นๆ ทั้งหมดผ่านทางขอบ

นี่คือตัวอย่างกราฟที่สมบูรณ์ซึ่งมีจุดยอด 5 จุด:

กราฟที่สมบูรณ์

คุณสามารถเห็นในภาพว่าจำนวนโหนดทั้งหมดคือห้าโหนด และโหนดทั้งหมดมีสี่ขอบพอดี

กราฟที่เชื่อมต่อ

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

นี่คือตัวอย่างของกราฟที่เชื่อมต่อ:

กราฟที่เชื่อมต่อ

ต่อไปนี้เป็นคำอธิบายบางส่วนของกราฟ “ตัวอย่างกราฟที่สมบูรณ์” ข้างต้น:

  • สมมติว่าไม่มีเส้นแบ่งระหว่าง C และ F เราไม่สามารถเดินทางจาก A ไปยัง G ได้ อย่างไรก็ตาม ขอบ C ถึง F ช่วยให้เราสามารถเดินทางไปยังโหนดใดๆ จากโหนดที่กำหนดได้
  • กราฟที่สมบูรณ์คือกราฟที่เชื่อมต่อ เนื่องจากเราสามารถย้ายจากโหนดไปยังโหนดอื่นในกราฟที่กำหนดได้

กราฟวงจร

กราฟจะเรียกว่าเป็นวงจรหากมีหนึ่งหรือหลายรอบปรากฏอยู่ในกราฟ

นี่คือตัวอย่างของกราฟแบบวน:

กราฟวงจร

ในที่นี้ จุดยอด A, B และ C ก่อตัวเป็นวงจร

กราฟสามารถมีได้หลายรอบอยู่ข้างใน

กราฟ Acyclic แบบกำกับ (DAG)

กราฟเรียกว่า Directed Acyclic Graph หรือ DAG หากไม่มีวงจรภายในกราฟ DAG มีความสำคัญในขณะที่ทำ การเรียงลำดับโทโพโลยี หรือค้นหาคำสั่งดำเนินการ DAG ยังมีความสำคัญสำหรับการสร้างระบบการจัดกำหนดการหรือการสแกนการขึ้นต่อกันของทรัพยากร ฯลฯ อย่างไรก็ตาม กราฟด้านบนไม่มีวงจรใดๆ อยู่ภายใน

นี่คือตัวอย่างง่ายๆ ของ Directed Acyclic Graph (DAG):

กราฟ Acyclic แบบกำกับ (DAG)

กราฟวงจร

กราฟวงจรไม่เหมือนกับกราฟวงจร ใน Cycle Graph แต่ละโหนดจะมีขอบสองอันเชื่อมต่อกันพอดี ซึ่งหมายความว่าแต่ละโหนดจะมีสององศาพอดี

นี่คือตัวอย่างกราฟวงจร:

กราฟวงจร

กราฟทวิภาคี

ประเภทนี้ กราฟ เป็นกราฟชนิดพิเศษที่กำหนดจุดยอดให้กับสองชุด

กราฟทวิภาคีจะต้องเป็นไปตามกฎ:

  • จุดยอดสองชุดควรแตกต่างกัน ซึ่งหมายความว่าจุดยอดทั้งหมดจะต้องแบ่งออกเป็นสองกลุ่มหรือชุด
  • จุดยอดชุดเดียวกันไม่ควรสร้างขอบใดๆ

กราฟทวิภาคี

กราฟออยเลอร์

โครงสร้างข้อมูลกราฟจะถือเป็นกราฟออยเลอร์หากจุดยอดทั้งหมดมีระดับเป็นเลขคู่ คำว่า องศาของจุดยอด หมายถึง จำนวนขอบที่ชี้หรือชี้ออกจากจุดยอดใดจุดหนึ่ง

นี่คือตัวอย่างกราฟออยเลอร์:

กราฟออยเลอร์

จุดยอดทั้งหมดมีองศาเท่ากัน จุดยอด A, D, E และ H มีองศาสององศา ตรงนี้ โหนด C มีสี่องศา ซึ่งก็คือเลขคู่

แฮมิลตันกราฟ

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

นี่คือตัวอย่างกราฟอย่างง่ายของแฮมิลตัน:

แฮมิลตันกราฟ

ในภาพนี้ เราสามารถเยี่ยมชมจุดยอดทั้งหมดจากโหนดใดก็ได้ในกราฟด้านบน หนึ่งในเส้นทางที่สามารถเป็นได้ ADCHBE- นอกจากนี้ยังสามารถหา Hamilton Cycle ได้ด้วย Hamilton Cycle เริ่มต้นและสิ้นสุดที่จุดยอดเดียวกัน ดังนั้น วงจรแฮมิลตันจะเป็นเช่นนี้ แอดช์บีอา.