Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> การเขียนโปรแกรม

ความแตกต่างระหว่าง Graph และ Tree ในโครงสร้างข้อมูล

บทนำ

ในการเขียนโปรแกรม Data Type (ชนิดข้อมูล) ระบุลักษณะและรูปแบบของข้อมูลที่จะใช้งาน ส่วน Data Structure (โครงสร้างข้อมูล) คือวิธีจัดเก็บและจัดระเบียบข้อมูล ข้อมูลแบ่งหลักได้ 2 ประเภทคือ Linear (เส้นตรง) และ Non-Linear (ไม่เส้นตรง) สำหรับข้อมูล Non-Linear โครงสร้างที่นิยมใช้คือ Graph (กราฟ) และ Tree (ต้นไม้) ทั้งคู่ประกอบด้วย Nodes (โหนด) และ Edges (ขอบ/เส้นเชื่อม) แต่มีความแตกต่างกันสำคัญ

ตารางเปรียบเทียบ Graph และ Tree

ลำดับ หัวข้อ Graph Tree
1 นิยาม การแสดงข้อมูล Non-Linear โดยโหนดแทนข้อมูล และ Edge แทนความสัมพันธ์ การแสดงข้อมูลแบบลำดับชั้น (Hierarchy) โหนดบนเป็น Parent โหนดล่างเป็น Child
2 การนำไปใช้ (Implementation) โหนดอาจเชื่อมต่อกัน หรือไม่เชื่อมต่อก็ได้ อาจมี Self-loop ทุกโหนด (ยกเว้น Root) ต้องมี Parent อย่างน้อย 1 ตัว ไม่มี Loop หรือ Self-loop
3 การค้นหาข้อมูล ยาก เนื่องจากอาจมี Self-loop ต้องติดตามเส้นทางให้ถูกต้อง ง่าย เนื่องจากเป็นลำดับชั้น สามารถ Traversal (DFS, BFS) ได้อย่างมีระบบ
4 ความสัมพันธ์ Parent-Child ไม่มี เพราะไม่ได้แสดงแบบลำดับชั้น มีชัดเจน ทุกโหนด (ยกเว้น Root) มี Parent อย่างน้อย 1 ตัว
5 ความสัมพันธ์ย้อนกลับ Graph ทุกตัวไม่ใช่ Tree Tree ทุกตัวเป็น Graph (Tree เป็นกรณีพิเศษของ Graph ที่ไม่มี Cycle)
6 การประยุกต์ใช้หลัก Graph Coloring, Job Scheduling, Shortest Path, Network Flow Sorting (Heap Sort), Traversal, Expression Tree, Decision Tree, File System

ความแตกต่างสำคัญเพิ่มเติม

  • Cycle: Graph อาจมี Cycle (วงจร) ได้ Tree ห้ามมี Cycle
  • Edges: Graph สามารถมี Edge ได้ไม่จำกัด Tree ที่มี n โหนด จะมี Edge อย่างแน่นอน n-1 เส้น
  • Root: Graph ไม่มี Root Tree มี Root อย่างแน่นอน 1 ตัว

สรุป

Tree เป็นกรณีพิเศษของ Graph ที่มีโครงสร้างเข้มงวดกว่า (Connected, Acyclic, Hierarchical) เลือกใช้ Graph เมื่อข้อมูลมีความสัมพันธ์ซับซ้อนหลายทิศทาง เลือกใช้ Tree เมื่อข้อมูลมีโครงสร้างลำดับชั้นชัดเจน