บทความนี้อาจต้องการตรวจสอบต้นฉบับ ในด้านไวยากรณ์ รูปแบบการเขียน การเรียบเรียง คุณภาพ หรือการสะกด คุณสามารถช่วยพัฒนาบทความได้ |
บทความนี้ไม่มีจาก |
ในสาขาวิชาวิทยาการคอมพิวเตอร์ กราฟเป็นโครงสร้างข้อมูลที่นำแนวคิดของกราฟทางคณิตศาสตร์และมาทำให้เกิดผล
โครงสร้างข้อมูลแบบกราฟประกอบด้วยเซตสองชุด คือ เซตของจุดยอด (หรือปม) และ เส้นเชื่อม เช่นเดียวกันกับทางคณิตศาสตร์ เส้นเชื่อม(x,y) มีหมายความว่า เส้นเชื่อมจากจุดยอด x ไปยังจุดยอด y
โครงสร้างข้อมูลแบบกราฟอาจให้ค่ากับเส้นเชื่อมโดยอาจจะให้ความหมายได้หลายอย่าง เช่น มูลค่า ความจุ ความยาว น้ำหนัก ฯลฯ
ขั้นตอนวิธี
ขั้นตอนวิธีสำหรับกราฟมีหลายแบบที่น่าสนใจและสำคัญในทางวิทยาการคอมพิวเตอร์ การดำเนินการระดับสูงที่เกี่ยวกับกราฟโดยทั่วไป ได้แก่ การหาแนวเดินระหว่างสองจุดยอด เช่น และ การค้นหาในแนวกว้าง การค้นหาแนวเดินสั้นสุดจากจุดยอดหนึ่งไปยังจุดยอดอื่น เช่น ขั้นตอนวิธีของไดค์สตรา ผลลัพธ์ในการหาแนวเดินสั้นสุดจากแต่ละจุดยอดไปยังทุกจุดยอดอื่นจะหาได้จาก ขั้นตอนวิธีของเบลแมน-ฟอร์ด
การดำเนินการ
การดำเนินการพื้นฐานสำหรับโครงสร้างข้อมูลแบบกราฟ G ประกอบด้วย
adjacent
(G, x, y): การทดสอบว่ามีเส้นเชื่อมจากจุดยอด x ไปยัง จุดยอด yneighbors
(G, x, y): รายการของทุกจุดยอด y กล่าวได้ว่า มีเส้นเชื่อมจาก x ไปยัง yadd
(G, x, y): เพิ่มเส้นเชื่อมจากจุดยอด x ไปยัง y ในกราฟ G ถ้ายังไม่มีdelete
(G, x, y): ลบเส้นเชื่อมจากจุดยอด x ไปยัง y ในกราฟ G ถ้ามีget_node_value
(G, x): คืนค่าของจุดยอด xset_node_value
(G, x, a): กำหนดค่าของจุดยอด x เท่ากับ a
โครงสร้างที่เส้นเชื่อมมีค่าประกอบด้วย
get_edge_value
(G, x, y): คืนค่ากับเส้นเชื่อม(x,y)get_edge_value
(G, x, y, v): ให้ค่ากับเส้นเชื่อม(x,y) เท่ากับ v
การจำลอง
ความแตกต่างของการจำลองกราฟด้วยโครงสร้างข้อมูลแบบต่างๆ มีดังนี้
- รายการประชิด (Adjacency list)
- จุดยอดถูกเก็บเป็นรายการของจุดยอดที่ประชิดกับอยู่ โครงสร้างข้อมูลแบบนี้อนุญาตให้จัดเก็บข้อมูลบนจุดยอดได้
- (Incidence list)
- จุดยอดและเส้นเชื่อมจัดเก็บบันทึก โดยแต่ละจุดยอดจะเก็บเส้นเชื่อมที่เชื่อมกับมัน และแต่ละเส้นเชื่อมเก็บจุดยอดที่ติดกับมัน โครงสร้างข้อมูลแบบนี้อนุญาตให้จัดเก็บข้อมูลบนจุดยอดและเส้นเชื่อมได้
- (Adjacency matrix)
- เป็นเมทริกซ์ 2 มิติ โดยที่แถวจำลองจุดยอดเริ่มต้น และหลักจำลองจุดยอดปลายทาง ข้อมูลบนเส้นเชื่อมและจุดยอดจะต้องเก็บไว้ภายนอก มีเฉพาะค่าของหนึ่งเส้นเชื่อมที่ถูกเก็บระหว่างคู่จุดยอดเท่านั้น
- (Incidence matrix)
- เป็นเมทริกซ์ 2 มิติที่เก็บค่า โดยแถวจำลองจุดยอดและหลักจำลองเส้นเชื่อมโดยจะแสดงว่าเส้นเชื่อมใดเชื่อมกับจุดใดบ้าง
ตามตารางบอกถึง ของการดำเนินการบนกราฟสำหรับการจำลองแบบต่างๆ
รายการประชิด | รายการตกกระทบ | เมทริกซ์ประชิด | เมทริกซ์ตกกระทบ | |
---|---|---|---|---|
การจัดเก็บ | ||||
เพิ่มจุดยอด | ||||
เพิ่มเส้นเชื่อม | ||||
ลบจุดยอด | ||||
ลบเส้นเชื่อม | ||||
ถามว่าจุดยอดสองจุดใด ๆเชื่อมกันหรือไม่ | ||||
หมายเหตุ | เมื่อลบเส้นเชื่อมหรือจุดยอด จำเป็นต้องหาทุกเส้นเชื่อมหรือจุดยอด | การเพิ่มหรือลบจุดยอดนั้นถือว่าช้า เพราะเมทริกซ์ต้องปรับขนาด/คัดลอก | การเพิ่มหรือลบเส้นเชื่อมนั้นถือว่าช้า เพราะเมทริกซ์ต้องปรับขนาด/คัดลอก |
แหล่งข้อมูลอื่น
- Boost Graph Library: a powerful C++ graph library
- Networkx: a Python graph library 2013-03-10 ที่ เวย์แบ็กแมชชีน
wikipedia, แบบไทย, วิกิพีเดีย, วิกิ หนังสือ, หนังสือ, ห้องสมุด, บทความ, อ่าน, ดาวน์โหลด, ฟรี, ดาวน์โหลดฟรี, mp3, วิดีโอ, mp4, 3gp, jpg, jpeg, gif, png, รูปภาพ, เพลง, เพลง, หนัง, หนังสือ, เกม, เกม, มือถือ, โทรศัพท์, Android, iOS, Apple, โทรศัพท์โมบิล, Samsung, iPhone, Xiomi, Xiaomi, Redmi, Honor, Oppo, Nokia, Sonya, MI, PC, พีซี, web, เว็บ, คอมพิวเตอร์
bthkhwamnixactxngkartrwcsxbtnchbb indaniwyakrn rupaebbkarekhiyn kareriyberiyng khunphaph hruxkarsakd khunsamarthchwyphthnabthkhwamidbthkhwamniimmikarxangxingcakaehlngthimaidkrunachwyprbprungbthkhwamni odyephimkarxangxingaehlngthimathinaechuxthux enuxkhwamthiimmiaehlngthimaxacthukkhdkhanhruxlbxxk eriynruwacanasaraemaebbnixxkidxyangiraelaemuxir insakhawichawithyakarkhxmphiwetxr krafepnokhrngsrangkhxmulthinaaenwkhidkhxngkrafthangkhnitsastraelamathaihekidphlkrafthimi 6 cudyxd aela 7 esnechuxm okhrngsrangkhxmulaebbkrafprakxbdwyestsxngchud khux estkhxngcudyxd hruxpm aela esnechuxm echnediywknkbthangkhnitsastr esnechuxm x y mihmaykhwamwa esnechuxmcakcudyxd x ipyngcudyxd y okhrngsrangkhxmulaebbkrafxacihkhakbesnechuxmodyxaccaihkhwamhmayidhlayxyang echn mulkha khwamcu khwamyaw nahnk lkhntxnwithikhntxnwithisahrbkrafmihlayaebbthinasnicaelasakhyinthangwithyakarkhxmphiwetxr kardaeninkarradbsungthiekiywkbkrafodythwip idaek karhaaenwedinrahwangsxngcudyxd echn aela karkhnhainaenwkwang karkhnhaaenwedinsnsudcakcudyxdhnungipyngcudyxdxun echn khntxnwithikhxngidkhstra phllphthinkarhaaenwedinsnsudcakaetlacudyxdipyngthukcudyxdxuncahaidcak khntxnwithikhxngeblaemn fxrdkardaeninkarkardaeninkarphunthansahrbokhrngsrangkhxmulaebbkraf G prakxbdwy adjacent G x y karthdsxbwamiesnechuxmcakcudyxd x ipyng cudyxd y neighbors G x y raykarkhxngthukcudyxd y klawidwa miesnechuxmcak x ipyng y add G x y ephimesnechuxmcakcudyxd x ipyng y inkraf G thayngimmi delete G x y lbesnechuxmcakcudyxd x ipyng y inkraf G thami get node value G x khunkhakhxngcudyxd x set node value G x a kahndkhakhxngcudyxd x ethakb a okhrngsrangthiesnechuxmmikhaprakxbdwy get edge value G x y khunkhakbesnechuxm x y get edge value G x y v ihkhakbesnechuxm x y ethakb vkarcalxngkhwamaetktangkhxngkarcalxngkrafdwyokhrngsrangkhxmulaebbtang midngni raykarprachid Adjacency list cudyxdthukekbepnraykarkhxngcudyxdthiprachidkbxyu okhrngsrangkhxmulaebbnixnuyatihcdekbkhxmulbncudyxdid Incidence list cudyxdaelaesnechuxmcdekbbnthuk odyaetlacudyxdcaekbesnechuxmthiechuxmkbmn aelaaetlaesnechuxmekbcudyxdthitidkbmn okhrngsrangkhxmulaebbnixnuyatihcdekbkhxmulbncudyxdaelaesnechuxmid Adjacency matrix epnemthriks 2 miti odythiaethwcalxngcudyxderimtn aelahlkcalxngcudyxdplaythang khxmulbnesnechuxmaelacudyxdcatxngekbiwphaynxk miechphaakhakhxnghnungesnechuxmthithukekbrahwangkhucudyxdethann Incidence matrix epnemthriks 2 mitithiekbkha odyaethwcalxngcudyxdaelahlkcalxngesnechuxmodycaaesdngwaesnechuxmidechuxmkbcudidbang tamtarangbxkthung khxngkardaeninkarbnkrafsahrbkarcalxngaebbtang raykarprachid raykartkkrathb emthriksprachid emthrikstkkrathbkarcdekb O V E displaystyle O V E O V E displaystyle O V E O V 2 displaystyle O V 2 O V E displaystyle O V cdot E ephimcudyxd O 1 displaystyle O 1 O 1 displaystyle O 1 O V 2 displaystyle O V 2 O V E displaystyle O V cdot E ephimesnechuxm O 1 displaystyle O 1 O 1 displaystyle O 1 O 1 displaystyle O 1 O V E displaystyle O V cdot E lbcudyxd O E displaystyle O E O E displaystyle O E O V 2 displaystyle O V 2 O V E displaystyle O V cdot E lbesnechuxm O E displaystyle O E O E displaystyle O E O 1 displaystyle O 1 O V E displaystyle O V cdot E thamwacudyxdsxngcudid echuxmknhruxim O V displaystyle O V O V displaystyle O V O 1 displaystyle O 1 O E displaystyle O E hmayehtu emuxlbesnechuxmhruxcudyxd caepntxnghathukesnechuxmhruxcudyxd karephimhruxlbcudyxdnnthuxwacha ephraaemthrikstxngprbkhnad khdlxk karephimhruxlbesnechuxmnnthuxwacha ephraaemthrikstxngprbkhnad khdlxkaehlngkhxmulxunBoost Graph Library a powerful C graph library Networkx a Python graph library 2013 03 10 thi ewyaebkaemchchin