Skip to main content

Data Structure แบบ non linear

c++-basic-dsa สามารถดู video ของหัวข้อนี้ก่อนได้ ดู video

รู้จักกับ Data structure แบบ non linear primitive

โครงสร้างข้อมูลแบบ non-primitive และ non-linear คือ โครงสร้างที่ไม่ได้จัดเก็บข้อมูลในหน่วยความจำแบบเรียงลำดับ และไม่สามารถกำหนดได้ด้วยค่าเพียงค่าเดียว โครงสร้างเหล่านี้มีความซับซ้อนมากกว่าชนิดข้อมูลแบบทั่วไป (เช่น int, char) และโครงสร้างข้อมูลแบบ linear (เช่น Array และ Linked List) เนื่องจากสามารถแสดงความสัมพันธ์ที่ซับซ้อนมากขึ้นระหว่างองค์ประกอบต่างๆ ของข้อมูลได้

โดยความแตกต่างหลักระหว่างโครงสร้างข้อมูล linear data structures และโครงสร้างข้อมูล non-linear data structures อยู่ที่วิธีการจัดเก็บ การจัดระเบียบ รวมถึงวิธีการเข้าถึงข้อมูล

  • โครงสร้างข้อมูล linear ข้อมูลภายในโครงสร้างจะถูกจัดเรียงอย่างเป็นลำดับ โดยแต่ละหน่วยข้อมูลจะมีความเกี่ยวข้องกับหน่วยก่อนหน้าและหน่วยถัดไปในระดับ (level) เดียวกัน
  • โครงสร้างข้อมูล non linear ข้อมูลจะไม่ได้ถูกเรียงลำดับ แต่จะมีความสัมพันธ์กันเป็นลำดับชั้น หรือเชื่อมโยงกันอย่างซับซ้อน การเข้าถึงข้อมูลอาจทำได้ยากกว่าและไม่ได้จำกัดอยู่แค่ในระดับเดียว โครงสร้างประเภทนี้รวมไปถึงโครงสร้างต้นไม้ (tree) และกราฟ (graph) ด้วย

ความแตกต่างอื่นๆของ 2 ประเภท

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

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

มีอะไรบ้างที่อยู่ในหมวดหมู่ของ Non Linear

1. โครงสร้างแบบต้นไม้ (Trees) เป็นโครงสร้างข้อมูลแบบลำดับชั้นที่ประกอบด้วยโหนด (node) โดยแต่ละโหนดอาจมีโหนดลูกได้ตั้งแต่ศูนย์ตัวขึ้นไป ต้นไม้จะมีโหนดราก (root node) เพียงตัวเดียวซึ่งเป็นจุดเริ่มต้นของโหนดอื่นๆ ที่แตกแขนงลงมา ตัวอย่างต้นไม้ที่ใช้กันบ่อยได้แก่ ต้นไม้ค้นหาแบบทวิภาค (Binary Tree), ต้นไม้ AVL (AVL Tree) และ ต้นไม้บี (B-Tree)

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

โดยในหัวข้อนี้เราจะเน้นไปที่ 2 ตัวนี้เป็นหลักกัน