โครงสร้างข้อมูล Tree และ Graph แตกต่างกันอย่างไร

ในทางวิชาการ อะไรคือความแตกต่างที่สำคัญระหว่างโครงสร้างข้อมูล Tree และ Graph? แล้วการค้นหาตามต้นไม้และการค้นหาตามกราฟล่ะ


person user918304    schedule 14.09.2011    source แหล่งที่มา


คำตอบ (11)


ต้นไม้เป็นเพียงรูปแบบจำกัดของกราฟ

ต้นไม้มีทิศทาง (ความสัมพันธ์ระหว่างพ่อแม่/ลูก) และไม่มีวงจร เหมาะกับหมวดหมู่ Directed Acyclic Graphs (หรือ DAG) ดังนั้นต้นไม้จึงเป็น DAG โดยมีข้อจำกัดว่าเด็กจะมีผู้ปกครองได้เพียงคนเดียวเท่านั้น

สิ่งหนึ่งที่สำคัญที่ต้องชี้ให้เห็นคือ Tree ไม่ใช่โครงสร้างข้อมูลแบบเรียกซ้ำ ไม่สามารถนำไปใช้เป็นโครงสร้างข้อมูลแบบเรียกซ้ำได้เนื่องจากข้อจำกัดข้างต้น แต่การใช้งาน DAG ใดๆ ซึ่งโดยทั่วไปแล้วจะไม่เกิดซ้ำก็สามารถใช้ได้เช่นกัน การใช้งาน Tree ที่ฉันชอบคือการแสดงแผนที่แบบรวมศูนย์และไม่เกิดซ้ำ

โดยทั่วไปแล้วกราฟจะค้นหาจากความกว้างก่อนหรือลึกก่อน เช่นเดียวกับต้นไม้

person user785287    schedule 10.10.2011
comment
กราฟมีประโยชน์มากและสามารถนำมาใช้สร้างแบบจำลองสิ่งต่างๆ จำนวนมหาศาลได้ โครงสร้างข้อมูลอื่นๆ จำนวนมากสามารถเห็นได้เป็นกราฟที่มีข้อจำกัด ตัวอย่างเช่น รายการที่เชื่อมโยงเพียงรายการเดียวถือเป็นกรณีพิเศษของ DAG - person J.R. Garcia; 27.07.2012
comment
@ user785287 การแสดงแผนที่แบบรวมศูนย์คุณหมายถึงอะไร - person Geek; 27.03.2013
comment
ต้นไม้ไม่ใช่โครงสร้างข้อมูลแบบเรียกซ้ำที่ทำให้เข้าใจผิดและผิด แผนผัง สามารถ สามารถแสดงด้วยโครงสร้างข้อมูลแบบไม่เรียกซ้ำ (เช่น อาร์เรย์ของขอบ แผนผังแบบเต็มเช่นเดียวกับที่อยู่ภายใต้ฮีปไบนารี สามารถแสดงได้อย่างกะทัดรัดในอาร์เรย์ นอกจากนี้ยังมี < i>การแสดงอย่างกระชับ ฯลฯ ฯลฯ) แต่วิธีที่ได้รับความนิยมและมีประโยชน์มากที่สุดในการแสดงคือการใช้โครงสร้างแบบตัวชี้แบบเรียกซ้ำ การเป็นตัวแทนไม่ได้มีลักษณะเฉพาะสำหรับต้นไม้ที่ไม่มีการหยั่งราก แต่นั่นก็ไม่มีสาระสำคัญ - person j_random_hacker; 07.07.2014
comment
ไม่มาก. ต้นไม้ไม่จำเป็นต้องมีทิศทาง en.wikipedia.org/wiki/Tree_(graph_theory) แสดงตัวอย่างของ ต้นไม้ที่ไม่มีทิศทาง สิ่งเหล่านี้มักใช้ในบริบททางชีววิทยา - person Michal Palczewski; 21.11.2015
comment
บทความวิกิพีเดียสำหรับ tree ระบุว่า tree เป็นกราฟที่ไม่มีทิศทาง แต่คำตอบทั้งหมดในหน้านี้บอกว่ามีผู้กำกับ ใครช่วยอธิบายความคลาดเคลื่อนได้ไหม en.wikipedia.org/wiki/Tree_(graph_theory) - person harshpatel991; 09.04.2018
comment
ต้นไม้ @ harshpatel991 ไม่ได้ถูกกำกับในแง่ที่ว่า: X และ Y อยู่ในความสัมพันธ์ระหว่างพ่อแม่และลูกไม่มีทิศทาง ความสัมพันธ์ส่วนบุคคล X เป็นลูกของ Y และ Y เป็นลูกของ X เป็นความสัมพันธ์โดยตรง ทิศทางบ่งบอกเพียงนั้น ทิศทางของ 'การเคลื่อนไหว' ในต้นไม้ แนวคิดเรื่องทิศทางไม่จำเป็นจริงๆ เว้นแต่ว่ามันมีความหมาย (ซึ่งมักเกิดขึ้นกับต้นไม้) อย่างน้อยฉันก็มองมันแบบนั้น - person Kostas Mouratidis; 11.06.2018
comment
ต้นไม้สามารถเรียกซ้ำได้ แต่การเรียกซ้ำสามารถแสดงด้วยการวนซ้ำและสิ้นสุดเสมอ ในขณะที่การเรียกซ้ำของกราฟแบบเรียกซ้ำบางรายการอาจไม่สิ้นสุดและอาจไม่ลดลงเหลือการวนซ้ำ - person Mateja Petrovic; 13.01.2019
comment
@ harshpatel991 จุดดี แต่ต้นไม้ในบริบทของวิทยาการคอมพิวเตอร์ส่วนใหญ่มักอ้างถึงต้นไม้ในบริบทของทฤษฎีกราฟที่ได้รับการชี้นำและหยั่งรากเพิ่มเติม (ต้นไม้ที่หยั่งรากโดยตรง) บทความที่คุณโพสต์พูดถึงเรื่องนี้ในย่อหน้าที่สาม - person Niko Bellic; 13.07.2020
comment
คุณช่วยอธิบายสิ่งที่คุณหมายถึงว่าต้นไม้ไม่สามารถนำไปใช้เป็นโครงสร้างข้อมูลแบบเรียกซ้ำได้หรือไม่? เป็นเรื่องปกติที่จะมีคลาสโหนดที่ชี้ไปยังรายการโหนด (ประเภทคลาสโหนดเดียวกัน) ซึ่งฉันถือว่าเป็นแบบเรียกซ้ำ - person Charlie Parker; 07.05.2021

แทนที่จะอธิบาย ฉันชอบแสดงเป็นรูปภาพมากกว่า

ต้นไม้แบบเรียลไทม์

ต้นไม้แบบเรียลไทม์

กราฟในการใช้งานจริง

กราฟแบบเรียลไทม์

ใช่ สามารถมองเห็นแผนที่เป็นโครงสร้างข้อมูลกราฟได้

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

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

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

แผนภาพทางเทคนิคอาจเป็นเช่นนี้

ต้นไม้ :

ป้อนคำอธิบายรูปภาพที่นี่

กราฟ :

ป้อนคำอธิบายรูปภาพที่นี่

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

อ้างอิง :

  1. http://www.introprogramming.info/english-intro-csharp-book/read-online/chapter-17-trees-and-graphs/#_Toc362296541

  2. http://www.community-of-knowledge.de/beitrag/data-trees-as-a-means-of-presenting-complex-data-analysis/

  3. วิกิพีเดีย

person mk..    schedule 07.01.2015

คำตอบอื่น ๆ มีประโยชน์ แต่ไม่มีคุณสมบัติของแต่ละข้อ:

กราฟ

กราฟแบบไม่ระบุทิศทาง แหล่งที่มาของภาพ: Wikipedia

กราฟกำกับ แหล่งที่มาของภาพ: Wikipedia

  • ประกอบด้วยชุดของจุดยอด (หรือโหนด) และชุดของขอบที่เชื่อมต่อบางส่วนหรือทั้งหมด
  • ขอบใดๆ ก็ตามสามารถเชื่อมต่อจุดยอดสองจุดใดๆ ที่ไม่ได้เชื่อมต่อด้วยขอบที่เหมือนกันอยู่แล้ว (ในทิศทางเดียวกัน ในกรณีของกราฟที่มีการกำหนดทิศทาง)
  • ไม่จำเป็นต้องเชื่อมต่อกัน (ขอบไม่จำเป็นต้องเชื่อมต่อจุดยอดทั้งหมดเข้าด้วยกัน): กราฟเดียวสามารถประกอบด้วยจุดยอดที่ตัดการเชื่อมต่อสองสามชุด
  • #P6#
    #P7#

ต้นไม้

แหล่งที่มาของภาพ: Wikipedia

  • ประเภทของกราฟ
  • จุดยอดมักเรียกว่า "โหนด"
  • Edges ได้รับการกำกับและแสดงถึงความสัมพันธ์ "เป็นลูกของ" (หรือ "เป็นพาเรนต์ของ")
  • แต่ละโหนด (ยกเว้นโหนดรูท) มีพาเรนต์เดียวเท่านั้น (และลูกเป็นศูนย์หรือมากกว่า)
  • มีโหนด "รูท" หนึ่งโหนด (หากแผนผังมีอย่างน้อยหนึ่งโหนด) ซึ่งเป็นโหนดที่ไม่มีพาเรนต์
  • จะต้องมีการเชื่อมต่อ
  • เป็นวงจร หมายความว่าไม่มีรอบ: "วงจรคือเส้นทาง [ลำดับ AKA ] ของขอบและจุดยอดซึ่งจุดยอดสามารถเข้าถึงได้จากตัวมันเอง"

มีการทับซ้อนกันในคุณสมบัติข้างต้น โดยเฉพาะอย่างยิ่ง คุณสมบัติสองรายการสุดท้ายมีความหมายโดยคุณสมบัติที่เหลือ แต่ทั้งหมดก็น่าสังเกต

person Bernhard Barker    schedule 30.04.2019
comment
รูปภาพทำให้เข้าใจง่ายมาก! - person Raghav Gupta; 21.10.2020

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

ในกราฟ สามารถมีได้มากกว่าหนึ่งเส้นทาง กล่าวคือ กราฟสามารถมีเส้นทาง (ขอบ) ทิศทางเดียวหรือสองทิศทางระหว่างโหนดได้

นอกจากนี้ คุณยังสามารถดูรายละเอียดเพิ่มเติม: http://freefeast.info/difference-between/difference-between-trees-and-graphs-trees-vs-graphs/

person Bipon Biswas    schedule 08.05.2017

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

แผนที่ (หรือที่เรียกว่าพจนานุกรม) คือคู่คีย์/ค่า มอบกุญแจให้กับแผนที่และมันจะส่งคืนค่าที่เกี่ยวข้อง

สามารถใช้แผนที่ได้โดยใช้ต้นไม้ ฉันหวังว่าคุณจะไม่พบว่ามันน่าสับสน

อัปเดต: การสร้าง "กราฟ" ที่สับสนสำหรับ "แผนที่" ทำให้เกิดความสับสนมาก

กราฟมีความซับซ้อนมากกว่าต้นไม้ ต้นไม้บ่งบอกถึงความสัมพันธ์ระหว่างพ่อแม่และลูกแบบเรียกซ้ำ มีวิธีธรรมชาติในการสำรวจต้นไม้: ลึกก่อน กว้างก่อน เรียงลำดับระดับ ฯลฯ

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

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

person duffymo    schedule 14.09.2011
comment
ขอโทษที ฉันหมายถึงกราฟ ฉันพิมพ์แผนที่ - person user918304; 15.09.2011
comment
กราฟที่สับสนสำหรับแผนที่ทำให้เกิดความสับสนมาก :) - person cpz; 18.07.2014
comment
การบอกว่ากราฟซับซ้อนกว่าต้นไม้ก็เหมือนกับการบอกว่าอีกามีความเชี่ยวชาญมากกว่านก เราไม่ควรพูดแทนว่า ต้นไม้ทั้งหมดเป็นกราฟ แต่ไม่ใช่กราฟทั้งหมดเป็นต้นไม้ใช่ไหม - person dudewad; 30.06.2017
comment
ฉันไม่สนใจหกปีต่อมา แน่นอนว่าคุณสามารถใช้เวลาของคุณได้ดีขึ้นที่นี่ - person duffymo; 30.06.2017

ในแผนผัง แต่ละโหนด (ยกเว้นโหนดรูท) มีโหนดก่อนหน้าหนึ่งโหนดและโหนดตัวตายตัวแทนหนึ่งหรือสองโหนด สามารถสำรวจได้โดยใช้การแวะชม In-order, Pre-order, Post-order และ Breadth First​ ต้นไม้เป็นกราฟชนิดพิเศษที่ไม่มีวงจร จึงเรียกว่า DAG (Directed Acyclic Graph) ต้นไม้เป็นรูปแบบลำดับชั้น

ในกราฟ แต่ละโหนดจะมีโหนดก่อนหน้าและโหนดที่สืบทอดตั้งแต่หนึ่งโหนดขึ้นไป กราฟถูกสำรวจโดยใช้อัลกอริธึม Depth First Search (DFS) และ Breadth First Search (BFS) กราฟมีวงจรจึงซับซ้อนกว่าต้นไม้ กราฟเป็นรูปแบบเครือข่าย กราฟมีสองประเภท: กราฟกำกับและกราฟไม่ระบุทิศทาง

person Community    schedule 31.10.2018
comment
โหนดต้นไม้สามารถมีโหนดที่สืบทอดได้ตั้งแต่ศูนย์ขึ้นไป ไม่ใช่แค่หนึ่งหรือสองโหนด ต้นไม้ไบนารีจำกัดจำนวนผู้สืบทอด/ลูกไว้ที่ 2 ต้น แต่ต้นไม้ทุกต้นมีโหนดใบที่ไม่มีลูก - person Aaron; 29.11.2020

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

person patel dhruv    schedule 24.07.2020

ต้นไม้เป็นกราฟที่:

ก) เมื่อนำทิศทางขอบออกแล้ว จะเชื่อมต่อกันและเป็นวงกลม

  1. คุณสามารถลบสมมติฐานที่ว่าเป็นแบบอะไซเคิลออกได้
  2. หากมีขอบเขตจำกัด คุณสามารถลบสมมติฐานที่เชื่อมโยงกันออกได้

b) ทุกจุดยอด ยกเว้นหนึ่งจุด ซึ่งเป็นราก มีระดับ 1

c) รูตมีอยู่ในระดับ 0

  1. หากมีโหนดจำนวนมากเท่านั้น คุณสามารถลบสมมติฐานที่ว่ารูทมีระดับ 0 หรือสมมติฐานที่ว่าโหนดอื่นที่ไม่ใช่รูทมีระดับ 1

อ้างอิง: http://www.cs.cornell.edu/courses/cs2800/2016sp/lectures/lec27-29-graphtheory.pdf

person BPL    schedule 01.06.2018

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

person Narender sharma    schedule 06.03.2013

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

person Rajan Kumar Kharel    schedule 09.02.2014

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

person Velkumaran A P    schedule 13.02.2021