กราฟคืออะไรในแง่ของฆราวาส


18

กราฟคืออะไรในวิทยาศาสตร์คอมพิวเตอร์และใช้ทำอะไร? ในแง่ของฆราวาสโดยเฉพาะอย่างยิ่ง

ฉันได้อ่านคำจำกัดความเกี่ยวกับWikipedia :

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

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

แต่ฉันกำลังมองหาคำจำกัดความที่เป็นทางการน้อยกว่าและเข้าใจง่ายขึ้น


คุณหมายถึงกราฟโครงสร้างข้อมูลหรือไม่
ระบบดาวน์

1
ใช่ขอโทษ. กราฟตามที่อธิบายไว้ที่นี่en.wikipedia.org/wiki/Graph_(abstract_data_type)เฉพาะฉันเท่านั้นที่กำลังมองหาคำจำกัดความที่เป็นทางการน้อยกว่าและเข้าใจได้ง่ายขึ้น
ConditionRacer

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

@ Justin984 นอกจากนี้โปรดทราบว่าComputer Science Stack Exchange อาจจะเหมาะสมกว่าสำหรับคำถามเช่นนี้มากกว่าโปรแกรมเมอร์ อย่าเข้าใจฉันผิดคำถามอยู่ในหัวข้อที่สมบูรณ์แบบและได้รับคำตอบที่ดี แต่ก็ไม่เจ็บถ้าคุณตรวจสอบชุมชนที่เน้นแนวคิดวิทยาศาสตร์คอมพิวเตอร์หลักมากกว่าที่เราเป็น โพสต์คำถามเดียวกันในหลาย ๆ ไซต์ แต่ถ้าคุณโพสต์คำถามผิดไซต์เราสามารถย้ายคำถามนั้นไปทางขวาโดยอัตโนมัติ)
yannis

คำตอบ:


26

ตัวอย่างเช่นคนธรรมดาที่สมบูรณ์แบบอาจจะมีFacebook เครือข่ายของคุณเพื่อนของคุณและเพื่อนของพวกเขา ฯลฯ จะอ้างเรียกรวมกันว่ากราฟทางสังคม

ในนี้ "กราฟที่" คนที่ได้รับการพิจารณาโหนดของกราฟและขอบที่มีการเชื่อมโยงมิตรภาพ

ใน Facebook เพื่อนเป็นความสัมพันธ์แบบสองทิศทาง (A เป็น B เพื่อน => B เป็นเพื่อนของ A) เพื่อให้กราฟเป็นUndirected กราฟ เครือข่ายเช่น Google+ หรือ Twitter จะถือเป็นกราฟกำกับเนื่องจากทิศทางของความสัมพันธ์มีความหมายที่นี่

กราฟเหล่านี้ทั้งหมดถูกอ้างถึงเป็นกราฟแบบวงกลมเนื่องจากความสัมพันธ์ระหว่างโหนดสามารถสร้างวัฏจักรได้ ในขณะที่แผนภูมิต้นไม้ครอบครัวเป็นกราฟชนิดพิเศษซึ่งเหนือสิ่งอื่นใดคือAcyclicเนื่องจากไม่มีวงจรในความสัมพันธ์ของแผนภูมิต้นไม้ครอบครัว (เรียกว่าเทคนิคDirected Acyclic Graph (DAG)ตั้งแต่ทั้งกำกับและ acyclic)

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


1
ไม่อยากจะเชื่อเลยว่ามันจะไม่เกิดขึ้นกับฉันที่เรียกว่า facebook graph api เป็นตัวอย่างที่ดี!
ConditionRacer

4
ต้นไม้ครอบครัวไม่ได้เป็นวัฏจักร? มันไม่ควรจะเป็น แต่น่าเสียดายที่ ...
Marjan Venema

1
@MarjanVenema, ต้นไม้ครอบครัวเป็นวงจร ? (มันเป็นกราฟเพื่อให้ทิศทางที่มีความสำคัญในการกำหนดรอบและสันนิษฐานความสัมพันธ์ขั้นตอนไม่ได้จริงๆนับ.)
Huon

@ dbaupp: ฉันไม่ต้องการที่จะลงรายละเอียดที่นี่ดังนั้นฉันจะพูดถึงเพียงคำเดียว: สท
Marjan Venema

5
@MarjanVenema คุณไม่มีจุดของฉัน รอบในกราฟกำกับเป็นรูปแบบเช่นA -> B -> C -> A(เช่นวงกลมของลูกศร), incest เพียงแค่ให้A -> B -> CและA -> D -> C(เช่นเพชร) รอบในแผนภูมิต้นไม้ครอบครัวต้องการการเดินทางข้ามเวลา
huon

16

กราฟเป็นหนึ่งในแนวคิดทางคณิตศาสตร์ที่สำคัญที่สุดที่ใช้ในวิทยาศาสตร์คอมพิวเตอร์

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

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

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


ฉันจะขยายตัวอย่างนั้นเพื่อทราบว่าเอนทิตีทั้งหมดที่อธิบายไว้ในตัวอย่างของคุณสามารถอธิบายได้ว่าเป็นจุดยอดในกราฟ (เมือง, เครื่องบิน, นิตยสาร, แผนที่, ฯลฯ ) แผนที่นั้นเป็นเพียงจุดยอดเดียว
Demian Brecht

14

คำถามที่ดีกว่าคือ "กราฟไม่ได้ใช้ทำอะไร" วิทยาศาสตร์คอมพิวเตอร์มีการศึกษากราฟหลายประการ

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

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

สิ่งใดก็ตามที่มีประสิทธิภาพซึ่งคุณสามารถแสดงเป็นชุดของการเชื่อมต่อสามารถแสดงเป็นกราฟและนำไปใช้ผ่าน ADT นั้นในบางรูปแบบ

นี่คือตัวอย่างกราฟิกที่ฉันทำ:

ตัวอย่างกราฟ


3

กราฟเป็นเพียงชุดของวัตถุที่เชื่อมต่อกันด้วยเส้นที่เรียกว่าจุดยอด

คำว่า "กราฟ" เป็นนามธรรมและลักษณะทั่วไปของโครงสร้างข้อมูลจำนวนมากที่ใช้ในการพัฒนาซอฟต์แวร์ รายการที่เชื่อมโยงต้นไม้ไบนารีและASTเป็นกราฟทั้งหมด

โดยพื้นฐานแล้วการรวบรวมวัตถุใด ๆ ที่มีพอยน์เตอร์ที่เชื่อมโยงวัตถุเข้าด้วยกันคือกราฟ เมื่อคุณมีกราฟคุณสามารถใช้หลักการของทฤษฎีกราฟมันจะแก้ปัญหาบางอย่าง

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.