กราฟในโครงสร้างข้อมูล: ประเภท การจัดเก็บ และการข้ามผ่าน

เผยแพร่แล้ว: 2020-10-07

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

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

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

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

ในการแสดงกราฟด้านบน ชุดของโหนดคือ N={0,1,2,3,4,5,6}และชุดของขอบคือ

ก={01,12,23,34,45,05,03}

ทีนี้มาศึกษาประเภทของกราฟกัน

อ่าน: เทคนิคการสร้างภาพข้อมูล 10 อันดับแรก

สารบัญ

ประเภทของกราฟ

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

กราฟที่มีค่าขอบหรือเส้นทาง ค่าทั้งหมดที่เห็นที่เกี่ยวข้องกับขอบเรียกว่าน้ำหนัก ค่าขอบสามารถแทนน้ำหนัก/ต้นทุน/ความยาวได้

ค่าหรือน้ำหนักอาจหมายถึง:

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

2. กราฟไม่ถ่วงน้ำหนัก

ในกรณีที่ไม่มีค่าหรือน้ำหนักที่เกี่ยวข้องกับขอบ ตามค่าเริ่มต้น กราฟทั้งหมดจะไม่ถ่วงน้ำหนัก เว้นแต่จะมีค่าที่เกี่ยวข้อง

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

เมื่อชุดของวัตถุเชื่อมต่อกัน และขอบทั้งหมดเป็นแบบสองทิศทาง ภาพด้านล่างแสดงกราฟที่ไม่มีทิศทาง

มันเหมือนกับการเชื่อมโยงกันของผู้ใช้ Facebook สองคนหลังจากเชื่อมต่อกันแบบเพื่อน ผู้ใช้ทั้งสองสามารถอ้างอิงและแบ่งปันรูปภาพ แสดงความคิดเห็นระหว่างกันได้

4. กราฟกำกับ

เรียกอีกอย่างว่า digraph ซึ่งชุดของวัตถุ (N, E) เชื่อมต่อกัน และขอบทั้งหมดถูกนำจากโหนดหนึ่งไปยังอีกโหนดหนึ่ง ภาพด้านบนแสดงกราฟกำกับ

ชำระเงิน: โครงการการแสดงข้อมูลที่คุณสามารถทำซ้ำได้

การจัดเก็บกราฟ

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

1. รายการที่อยู่ติดกัน

โหนดในที่นี้จะถูกจัดเก็บเป็นดัชนีของอาร์เรย์แบบมิติเดียว ตามด้วยขอบที่จัดเก็บเป็นรายการ

2. เมทริกซ์ที่อยู่ติดกัน

โหนดในที่นี้แสดงเป็นดัชนีของอาร์เรย์สองมิติ ตามด้วยขอบที่แสดงเป็นค่าที่ไม่ใช่ศูนย์ของเมทริกซ์ที่อยู่ติดกัน

ทั้งแถวและคอลัมน์แสดงโหนด เมทริกซ์ทั้งหมดเต็มไปด้วย "0" หรือ "1" ซึ่งแทนค่าจริงหรือเท็จ ศูนย์แสดงว่าไม่มีเส้นทาง และ 1 หมายถึงเส้นทาง

การข้ามผ่านกราฟ

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

มีโครงสร้างการข้ามผ่านของกราฟสองแบบ

1. DFS (Depth First Search): วิธีค้นหาในเชิงลึก

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

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

ขั้นตอนตามเพื่อใช้การค้นหา DFS:

ขั้นตอนที่ 1 – ต้องกำหนดขนาดสแต็กขึ้นอยู่กับจำนวนโหนดทั้งหมด

ขั้นตอนที่ 2 – เลือกโหนดเริ่มต้นสำหรับแนวขวาง ต้องถูกผลักไปที่สแต็กโดยไปที่โหนดนั้น

ขั้นตอนที่ 3 – ตอนนี้ ไปที่โหนดที่อยู่ติดกันซึ่งไม่เคยเข้าชมมาก่อนแล้วดันไปที่สแต็ก

ขั้นตอนที่ 4 – ทำซ้ำขั้นตอนที่ 3 จนกว่าจะไม่มีโหนดที่อยู่ติดกันที่ไม่ได้เยี่ยมชม

ขั้นตอนที่ 5 – ใช้การย้อนรอยและหนึ่งโหนดเมื่อไม่มีโหนดอื่นให้เยี่ยมชม

ขั้นตอนที่ 6 – ล้างสแต็กโดยทำซ้ำขั้นตอนที่ 3,4 และ 5

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

แอปพลิเคชันของ DFS คือ:

  • ไขปริศนาด้วยวิธีเดียวเท่านั้น
  • เพื่อทดสอบว่ากราฟเป็นแบบสองส่วนหรือไม่
  • Topological Sorting สำหรับจัดตารางงานและอื่นๆ อีกมากมาย

2. BFS (Breadth-First Search): การค้นหาดำเนินการโดยใช้วิธีการเข้าคิว

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

ปฏิบัติตามขั้นตอนเพื่อใช้การค้นหา BFS

ขั้นตอนที่ 1 – ตามจำนวนโหนด คิวถูกกำหนด

ขั้นตอนที่ 2 – เริ่มจากโหนดใดๆ ของการข้ามผ่าน เยี่ยมชมโหนดนั้นและเพิ่มลงในคิว

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

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

ขั้นตอนที่ 5 – ล้างคิวโดยทำซ้ำขั้นตอนที่ 4 และ 5

ขั้นตอนที่ 6 – ลบขอบที่ไม่ได้ใช้และสร้างแผนผังที่ขยายหลังจากคิวว่างเปล่าเท่านั้น

การประยุกต์ใช้ BFS คือ:

  • Peer to Peer Networks- เช่นเดียวกับใน Bittorrent จะใช้เพื่อค้นหาโหนดที่อยู่ติดกันทั้งหมด
  • โปรแกรมรวบรวมข้อมูลในเครื่องมือค้นหา
  • เว็บไซต์โซเชียลเน็ตเวิร์กและอื่น ๆ อีกมากมาย

การประยุกต์ใช้กราฟในโลกแห่งความเป็นจริงในโครงสร้างข้อมูล

กราฟถูกใช้ในแอปพลิเคชันต่างๆ ในแต่ละวัน เช่น การแสดงเครือข่าย (ถนน การทำแผนที่ไฟเบอร์ออปติก การออกแบบแผงวงจร ฯลฯ) ตัวอย่าง: ในเครือข่ายข้อมูลของ Facebook โหนดเป็นตัวแทนของผู้ใช้ รูปภาพหรือความคิดเห็นของผู้ใช้ และขอบแสดงถึงรูปภาพ ความคิดเห็นในรูปภาพ

กราฟในโครงสร้างข้อมูล มีการใช้งานที่หลากหลาย สิ่งที่น่าสังเกตคือ:

  • Social Graph APIs – เป็นวิธีหลักในการสื่อสารข้อมูลเข้าและออกจากแพลตฟอร์มโซเชียลมีเดียของ Facebook เป็น API แบบ HTTP ซึ่งใช้ในการสืบค้นข้อมูลโดยทางโปรแกรม อัปโหลดรูปภาพและวิดีโอ สร้างเรื่องราวใหม่ และงานอื่นๆ อีกมากมาย ประกอบด้วยโหนด ขอบ และฟิลด์ ในการสอบถาม จะใช้โหนดอ็อบเจ็กต์เฉพาะ ขอบสำหรับกลุ่มของวัตถุที่อยู่ภายใต้วัตถุเดียว และฟิลด์ใช้เพื่อดึงข้อมูลเกี่ยวกับแต่ละวัตถุในกลุ่ม
  • GraphQL API ของ Yelp – เป็นเครื่องมือแนะนำที่ใช้ในการดึงข้อมูลเฉพาะจากแพลตฟอร์ม Yelp ในที่นี้ คำสั่งจะใช้เพื่อค้นหาขอบ หลังจากนั้นระบบจะสอบถามโหนดเฉพาะเพื่อดึงผลลัพธ์ที่แน่นอน ซึ่งจะทำให้กระบวนการดึงข้อมูลเร็วขึ้น

บนแพลตฟอร์ม Yelp โหนดเป็นตัวแทนของธุรกิจ ซึ่งประกอบด้วย id ชื่อ is_closed และคุณสมบัติกราฟอื่นๆ อีกมากมาย

  • อัลกอริธึมการปรับเส้นทาง ให้เหมาะสม - ใช้เพื่อค้นหาการเชื่อมต่อที่ดีที่สุดซึ่งเหมาะสมกับเกณฑ์ความเร็ว ความปลอดภัย เชื้อเพลิง ฯลฯ BFS ใช้ในอัลกอริธึมนี้ ตัวอย่างที่ดีที่สุดคือ Google Maps Platform (แผนที่, API เส้นทาง)
  • เครือข่าย เที่ยวบิน- ในเครือข่ายการบิน ใช้เพื่อค้นหาเส้นทางที่เหมาะสมที่สุดซึ่งเหมาะกับ โครงสร้าง ข้อมูล กราฟ นอกจากนี้ยังช่วยในรูปแบบและเพิ่มประสิทธิภาพขั้นตอนสนามบินอย่างมีประสิทธิภาพ

อ่านเพิ่มเติม: ประโยชน์ของการสร้างภาพข้อมูล

บทสรุป

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

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

ทำไมถึงเลือกเรียนกับ upGrad ?

เราขอแนะนำให้คุณเลือก Executive PG Program in Data Science ที่นำเสนอโดย IIIT Bangalore ซึ่งโฮสต์บน upGrad เพราะที่นี่คุณสามารถรับคำถามของคุณ 1-1 กับผู้สอนหลักสูตร ไม่เพียงแค่เน้นการเรียนรู้เชิงทฤษฎีเท่านั้น แต่ยังให้ความสำคัญกับความรู้เชิงปฏิบัติ ซึ่งเป็นสิ่งสำคัญในการเตรียมความพร้อมให้ผู้เรียนพร้อมสำหรับการเผชิญหน้าโครงการในโลกแห่งความเป็นจริง และมอบใบรับรอง NASSCOM ฉบับที่ 1 ของอินเดียแก่คุณ ซึ่งช่วยให้คุณได้งานที่ได้ค่าตอบแทนสูงใน Data Science

ผลงานที่อ้างถึง

ภาควิชาคณิตศาสตร์/CS – หน้าแรก , www.mathcs.emory.edu/~cheung/Courses/171/Syllabus/11-Graph/data-stru.html

“ความรู้ทางคณิตศาสตร์” คำจำกัดความของกราฟกำกับ – Math Insight , mathinsight.org/definition/directed_graph

สิงห์, อมฤตปาล. “โครงสร้างข้อมูลกราฟ” ปานกลาง , ปานกลาง, 29 มี.ค. 2020, medium.com/@singhamritpal49/graph-data-structure-49427c81b3b3

โซโล. “การใช้งานจริงของโครงสร้างข้อมูลกราฟที่คุณต้องรู้จัก” ข้อมูลกราฟและ GraphQL API Development-Leap Graph , leapgraph.com/graph-data-structures-applications

เหตุใดจึงต้องมีกราฟในโครงสร้างข้อมูล

ปัญหาในชีวิตจริงหลายอย่างแก้ไขได้ด้วยกราฟ เครือข่ายแสดงโดยใช้กราฟ เส้นทางในเมือง เครือข่ายโทรศัพท์ หรือเครือข่ายวงจรเป็นตัวอย่างของเครือข่าย กราฟยังถูกใช้ในเว็บไซต์เครือข่ายสังคมเช่น LinkedIn และ Facebook กราฟเป็นโครงสร้างข้อมูลที่แข็งแกร่งและปรับเปลี่ยนได้ ซึ่งช่วยให้คุณแสดงการเชื่อมต่อจริงระหว่างข้อมูล (โหนด) ประเภทต่างๆ ได้หลายประเภท กราฟประกอบด้วยสององค์ประกอบหลัก (จุดยอดและขอบ) ข้อมูลจะถูกเก็บไว้ที่จุดยอด (nodes) ซึ่งแสดงด้วยตัวเลขในภาพทางด้านซ้าย ขอบ (จุดเชื่อมต่อ) ที่เชื่อมโหนดในภาพ กล่าวคือ เส้นที่เชื่อมระหว่างตัวเลข

โครงสร้างข้อมูลมีกี่ประเภทในการจัดเก็บกราฟ

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

Traversal คืออะไร?

การข้ามผ่านเป็นขั้นตอนที่เข้าชมโหนดทั้งหมดในทรีและพิมพ์ค่าของโหนด เนื่องจากโหนดทั้งหมดเชื่อมโยงกันด้วยขอบ (ลิงก์) เราจึงเริ่มต้นที่โหนดราก (ส่วนหัว) เสมอ นั่นคือเราไม่สามารถสุ่มตรวจโหนดในต้นไม้ได้ In-order Traversal, Pre-order Traversal และ Post-order Traversal เป็นสามวิธีในการสำรวจต้นไม้