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

สถาปัตยกรรมกราฟโหนดเป็นโครงสร้างการออกแบบซอฟต์แวร์ที่ยึดแนวคิดของกราฟโหนด เป็นหลัก ทั้งซอร์สโค้ดและส่วนติดต่อผู้ใช้ได้ รับการออกแบบโดยคำนึงถึงการแก้ไขและการประกอบ (หรือการเชื่อมโยง) หน่วยการทำงานพื้นฐาน กราฟโหนดเป็น ภาษาการเขียนโปรแกรมเชิงภาพประเภท หนึ่ง
โค้ดต้นฉบับของแอปพลิเคชันซอฟต์แวร์ถูกจัดระเบียบเป็นหน่วยการทำงานพื้นฐานที่เรียกว่าโหนด โดยทั่วไปจะทำโดยใช้คลาสที่สืบทอดมาจากคลาสพื้นฐานสำหรับทุกโหนด แต่ละโหนดสามารถมีอินพุตและเอาต์พุต ซึ่งโดยทั่วไปก็ถูกนำไปใช้โดยใช้คลาสที่สืบทอดมาจากคลาสพื้นฐานสำหรับอินพุตและเอาต์พุตทั้งหมดเช่นกัน เอาต์พุตและอินพุตสามารถอ้างอิงถึงกันได้ โดยทั่วไปโดยการเก็บพอยเตอร์ไปยังอินสแตนซ์ของเอาต์พุตหรืออินพุตอื่นๆ เมื่อโหนดดำเนินการตามฟังก์ชันการทำงาน มันจะดึงอินพุตโดยการติดตามพอยเตอร์ที่เก็บไว้ในอินพุตเพื่อดึงข้อมูลที่ส่งออกมาจากโหนดอื่นๆ จากนั้นโหนดจะดำเนินการกับอินพุตเหล่านั้นเพื่อสร้างเอาต์พุตของตัวเอง ความสามารถในการเชื่อมโยงโหนดเข้าด้วยกันในลักษณะนี้ช่วยให้สามารถแบ่งงานหรือปัญหาที่ซับซ้อนออกเป็นหน่วยโหนดพื้นฐานที่เข้าใจได้ง่ายขึ้น
ส่วนติดต่อผู้ใช้ของแอปพลิเคชันซอฟต์แวร์มักจะแสดงกราฟโหนดให้ผู้ใช้เห็น โหนดมักจะถูกวาดเป็นรูปสี่เหลี่ยมผืนผ้า และการเชื่อมต่อระหว่างโหนดจะถูกวาดด้วยเส้นตรงหรือเส้นโค้ง
การใช้สถาปัตยกรรมกราฟโหนดเริ่มต้นขึ้นในทศวรรษ 1960 ปัจจุบันการใช้งานกราฟโหนดได้แพร่หลายอย่างมาก โดยสาขากราฟิก เกมและการเรียนรู้ของเครื่องเป็นกลุ่มหลักที่นำการออกแบบซอฟต์แวร์นี้ไปใช้ โดยเครื่องมือส่วนใหญ่ใช้สถาปัตยกรรมกราฟโหนด
จนถึงทุกวันนี้ ยังคงมีการถกเถียงกัน อยู่บ้าง เกี่ยวกับข้อดีของการเขียนโปรแกรมแบบภาพและการใช้สถาปัตยกรรมกราฟโหนด ผู้สนับสนุนชี้ให้เห็นว่านามธรรมที่กราฟโหนดมอบให้นั้นทำให้เครื่องมือนี้ใช้งานง่ายขึ้น ในขณะที่ผู้คัดค้านชี้ให้เห็นว่าการเขียนโปรแกรมแบบภาพนั้นมีข้อจำกัดมากเกินไป และพวกเขาต้องหันไปแก้ไขซอร์สโค้ดหรือสคริปต์เพื่อให้งานสำเร็จลุล่วง
ประวัติศาสตร์
ปัจจุบัน Eric Hosickกำลังรวบรวมภาพรวมของอินเทอร์เฟซผู้ใช้แบบกราฟโหนดในแอปพลิ เคชันซอฟต์แวร์ส่วนใหญ่ บน เว็บไซต์ Xความพยายามนี้มีจุดมุ่งหมายเพื่อบันทึกวิวัฒนาการและการพัฒนาอย่างรวดเร็วของอินเทอร์เฟซผู้ใช้แบบกราฟโหนดตั้งแต่จุดเริ่มต้น ประวัติศาสตร์เชิงภาพนี้ถูกนำเสนอไว้ในบล็อกเพจชื่อVisual Programming Languages - Snapshotsงานที่นำไปสู่สถาปัตยกรรมกราฟโหนดและการเขียนโปรแกรมเชิงภาพดูเหมือนจะเริ่มต้นขึ้นในช่วงทศวรรษ 1960 ในสาขาที่เรียกว่า "การสื่อสารระหว่างมนุษย์กับเครื่องจักร"
ในวิทยานิพนธ์ของวิลเลียม โรเบิร์ต ซัทเธอร์แลนด์ ที่ MIT (ปี 1966) เรื่อง "การกำหนดรายละเอียดขั้นตอนการทำงานด้วยภาพกราฟิกออนไลน์"เขาได้อธิบายและวิเคราะห์หัวข้อต่างๆ เกี่ยวกับภาษาภาพสองมิติ นี่เป็นหนึ่งในงานวิจัยแรกๆ เกี่ยวกับ เวิร์กโฟลว์หรือโปรแกรม ที่ใช้การไหล ของข้อมูล นับตั้งแต่นั้นมา วิทยานิพนธ์ของเขาถูกนำมาใช้เป็น " เอกสารอ้างอิงก่อนหน้า " เพื่อระงับคดีความเกี่ยวกับแนวคิดการไหลของข้อมูลในปัจจุบัน งานของเขามักถูกมองว่าเป็นผู้นำไปสู่สิ่งที่เรียกว่าการออกแบบโดยใช้คอมพิวเตอร์ช่วย (CAD)ในปัจจุบัน
- โปรแกรมภาพเป็นวิธีที่เป็นธรรมชาติในการแสดงกระบวนการคู่ขนาน ลักษณะสองมิติของภาษาช่วยให้เห็นภาพหลายสิ่งหลายอย่างที่เกิดขึ้นพร้อมกัน[ 1 ]
- การใช้รูปแบบภาษาภาพจะช่วยให้การดีบักโปรแกรมง่ายขึ้น โดยเฉพาะโปรแกรมแบบขนาน การที่สามารถแนบโพรบข้อมูลและดูการทำงานของโปรแกรมทำให้เข้าใจรายละเอียดที่ยากจะได้รับด้วยวิธีอื่น[ 1 ]
- การดำเนินการของโปรแกรมไม่จำเป็นต้องถูกควบคุมโดยข้อกำหนดการไหลตามลำดับที่ชัดเจนตามปกติ การเคลื่อนย้ายข้อมูลผ่านโปรแกรมอาจกำหนดการทำงานของโปรแกรม ข้อกำหนดที่ควบคุมด้วยข้อมูลสอดคล้องกับแนวคิดเชิงสัญชาตญาณของเราเกี่ยวกับวิธีการทำงานของโปรแกรมกราฟิก และยังช่วยให้สามารถเขียนโปรแกรมแบบขนานได้โดยไม่ต้องกำหนดการไหลอย่างชัดเจน[ 1 ]
ในปี พ.ศ. 2512 TO Ellis, JF Heafner และ WL Sibley ได้ตีพิมพ์บทความเกี่ยวกับภาษาป้อนข้อมูลแบบกราฟิก (GRAIL)งานของพวกเขาเกี่ยวข้องกับแท็บเล็ต RANDซึ่งเริ่มต้นจากการวิจัยเกี่ยวกับSketchpadซึ่งเป็นระบบที่ผู้ใช้สามารถเขียนคำสั่งคอมพิวเตอร์ลงบนแท็บเล็ตได้โดยตรง ดำเนินการโดยIvan Sutherlandระบบ GRAIL ใช้ภาษาการเขียนโปรแกรมแบบกราฟิกตามผังงาน และสามารถจดจำตัวอักษรที่เขียนด้วยลายมือและท่าทางได้[ 2 ] Alan Kay ได้สาธิต ระบบ GRAILหลายครั้งแต่เขาไม่ได้มีส่วนร่วมในการสร้างระบบนี้
- แนวคิดการจัดองค์กรที่สำคัญในระบบ GRAIL ได้แก่ การควบคุมการไหลตามลำดับ ลำดับชั้นของรูทีนย่อย และภาษา (แผนภาพการไหล) สำหรับการเชื่อมโยงองค์กรในเชิงภาพภายในแนวคิดของสองข้อแรก[ 2 ]
- ลักษณะการควบคุมตามลำดับช่วยให้มนุษย์สามารถมองเห็นกระบวนการที่แยกออกจากกันซึ่งปรับให้เข้ากับหน้าที่เฉพาะ ซึ่งในทางกลับกันจะช่วยให้ผู้จัดงานสามารถคิดถึงโปรแกรมทั้งหมดในแง่ของส่วนย่อยที่จัดการได้[ 2 ]
- ลำดับชั้นของรูทีนย่อยเน้นย้ำแนวคิดของกระบวนการที่แยกออกจากกันมากยิ่งขึ้น[ 2 ]
- แผนภาพการไหลช่วยให้ผู้ชายเห็นภาพตัวเลือกการควบคุมและความสัมพันธ์ระหว่างกระบวนการต่างๆ โดยแสดงความสัมพันธ์ระหว่างกันเหล่านี้ในสองมิติ[ 2 ]
การใช้งานสถาปัตยกรรมกราฟโหนดแบบใหม่ ๆ เริ่มขึ้นประมาณปี 2005 กราฟโหนดในช่วงเวลานั้นเริ่มพัฒนาแนวคิดเพื่อรับมือกับความซับซ้อนในกราฟโหนด ความซับซ้อนเกิดขึ้นเมื่อจำนวนโหนดและลิงก์ในกราฟเพิ่มขึ้น หนึ่งในแนวคิดหลักในการรับมือกับความซับซ้อนคือแนวคิดของกลุ่มหรือโหนดแพ็กเกจ ซึ่งซ่อนโหนดภายในไว้ โดยเปิดเผยเฉพาะอินพุตและเอาต์พุตของกลุ่มเท่านั้น
- ดาบคาตานะ โรงหล่อ
- ฮูดินี, ไซด์เอฟเอฟ
- นิวเคลียร์, ฟาวน์ดรี
- มาริ, โรงหล่อ
- มายา, ออโต้เดสก์
- Blender (ซอฟต์แวร์) § โหนดเรขาคณิต — เอกสารอย่างเป็นทางการ
- กราสฮอปเปอร์ แมคนีล แอนด์ แอสโซซิเอทส์
- ไดนาโม, ออโต้เดสก์
นามธรรมและความซับซ้อน
ในบทความ Hierarchical Small Worlds in Software Architecture [ 3 ]ผู้เขียน Sergi Valverde โต้แย้งว่าระบบซอฟต์แวร์ขนาดใหญ่ส่วนใหญ่ถูกสร้างขึ้นในลักษณะโมดูลาร์และลำดับชั้น และสามารถใช้กราฟโหนดในการวิเคราะห์ระบบซอฟต์แวร์ขนาดใหญ่ได้ บทความวิเคราะห์ซอฟต์แวร์อื่นๆ อีกมากมายมักใช้กราฟโหนดในการวิเคราะห์ระบบซอฟต์แวร์ขนาดใหญ่ ซึ่งแสดงให้เห็นว่ากราฟโหนดเป็นแบบจำลองที่ดีของโครงสร้างภายในและการทำงานของซอฟต์แวร์[ 4 ]
การถกเถียงเรื่องการเขียนโปรแกรมเชิงภาพ
กราฟโหนดเป็นส่วนย่อยของกลุ่มภาษาการเขียนโปรแกรมเชิงภาพ ที่กว้างกว่า กราฟโหนดช่วยให้คุณออกแบบโปรแกรมในรูปแบบที่เป็นภาพและมีโครงสร้าง แทนที่จะเขียนโค้ดต้นฉบับใน อุตสาหกรรม ภาพยนตร์และวิดีโอเกมกราฟโหนดมีความหมายเหมือนกันกับการเขียนโปรแกรมเชิงภาพ ปัจจุบันมีการถกเถียงกันเกี่ยวกับพลัง นามธรรม และความจำเป็นของกราฟโหนดและภาษาการเขียนโปรแกรมเชิงภาพ
- ผู้สนับสนุนการเขียนโปรแกรมแบบภาพมักเน้นย้ำถึงความเรียบง่ายของการเขียนโปรแกรม เนื่องจากเป็นการแยกรายละเอียดต่างๆ ออกไป และแสดงเฉพาะส่วนควบคุมที่จำเป็นสำหรับโดเมนเท่านั้น[ 5 ]ส่วนควบคุมเหล่านี้คือพารามิเตอร์บนโหนดที่ควบคุมพฤติกรรมของโหนด และการเชื่อมโยงระหว่างโหนด
- โดยทั่วไปนักวิจารณ์การเขียนโปรแกรมแบบภาพจะเน้นย้ำว่ามันไม่ได้ให้การควบคุมมากพอ และสำหรับงานที่ซับซ้อนมากขึ้น จำเป็นต้องเขียนโค้ดต้นฉบับ[ 6 ]อย่างไรก็ตาม งานที่ซับซ้อนมากขึ้นเหล่านี้มักจะอยู่นอกเหนือการใช้งานหรือขอบเขตที่ตั้งใจไว้ของกราฟโหนด
ประเด็นนี้ยังคงเป็นหัวข้อถกเถียงกันอย่างต่อเนื่อง โดยมีการอภิปรายใหม่ๆ เกิดขึ้นในเวทีสาธารณะจนถึงทุกวันนี้ ต่อไปนี้คือการอภิปรายครั้งใหญ่ที่สุดบางส่วนที่เกิดขึ้นจนถึงปัจจุบัน
- การสนทนาบน Hacker News ปี 2014
- การสนทนาบน Hacker News ปี 2019
- กระทู้สนทนาบน Reddit ปี 2019
งานวิจัยมักจะให้รายละเอียดเพิ่มเติมเกี่ยวกับการอภิปรายเหล่านี้และเน้นข้อดีและข้อเสียของกราฟโหนดมากขึ้น งานวิจัยเหล่านี้ระบุว่ากราฟโหนดและการเขียนโปรแกรมแบบภาพนั้นเข้าใจง่ายสำหรับผู้ใช้ใหม่ แต่เมื่อผู้ใช้ก้าวไปสู่ภารกิจที่ซับซ้อนมากขึ้น พวกเขามักจะต้องหันมาใช้การเขียนโค้ดต้นฉบับที่เป็นข้อความ[ 7 ]การสำรวจอีกครั้งหนึ่งมุ่งเน้นไปที่ความเชื่อของผู้คนเกี่ยวกับผลกระทบทางด้านการรับรู้ของการเขียนโปรแกรมแบบภาพ ซึ่งพบว่าโปรแกรมเมอร์มืออาชีพเป็นกลุ่มที่สงสัยเกี่ยวกับการเขียนโปรแกรมแบบภาพมากที่สุด[ 8 ]งานวิจัยอื่นๆ ได้แสดงให้เห็นในการทดลองทางจิตวิทยาว่าการเขียนโปรแกรมแบบภาพสามารถส่งผลดีอย่างมีนัยสำคัญต่อประสิทธิภาพในการทำงานด้านการรับรู้[ 9 ]
กราฟโหนด

ในบริบทของสถาปัตยกรรมซอฟต์แวร์กราฟโหนดหมายถึงการจัดระเบียบฟังก์ชันการทำงานของซอฟต์แวร์ออกเป็นหน่วยย่อยที่เรียกว่าโหนด โดยที่โหนดต่างๆ สามารถเชื่อมต่อกันได้ผ่านทางลิงก์ การจัดการโหนดและลิงก์ในกราฟโหนดมักทำได้ผ่านAPI ที่สามารถตั้งโปรแกรมได้ หรือผ่านอินเทอร์เฟซแบบกราฟิกโดยใช้เมาส์ในแผนภาพด้านบน กราฟโหนดปรากฏอยู่ทางด้านขวามือ
ในปัจจุบัน คำว่า "node graph" เป็นคำประสมแบบเปิด แต่ในซอฟต์แวร์รุ่นเก่าจะใช้คำว่า "nodegraph" ซึ่งเป็นคำประสมแบบปิด
- โนเดกราฟ, ซอฟต์แวร์วาล์ว
- โนดกราฟ, น็อตช์
โหนด
โหนดทำหน้าที่คำนวณบางอย่าง โดยจะห่อหุ้มฟังก์ชัน การทำงาน ที่สามารถดำเนินการได้และมักจะรับอินพุตและสร้างเอาต์พุตเป็นผลพลอยได้จากการดำเนินการตัวอย่างง่ายๆ คือ โหนดที่บวกตัวเลขสองตัวเข้าด้วยกัน อินพุตคือตัวเลขสองตัวที่จะบวก และเอาต์พุตคือผลรวมของตัวเลขทั้งสอง
จุดต่างๆ เปรียบเสมือนฟังก์ชันทางคณิตศาสตร์ในรูปแบบต่อไปนี้
โดยที่คือค่าการคำนวณของโหนดคือเวกเตอร์ของค่าอินพุตของโหนด และคือเวกเตอร์ของค่าเอาต์พุตของโหนด
โดยทั่วไปแล้ว โหนดมักถูกแสดงด้วยรูปสี่เหลี่ยมผืนผ้า อย่างไรก็ตาม นี่ไม่ใช่ธรรมเนียมปฏิบัติที่แอปพลิเคชันทั้งหมดใช้ ในแผนภาพด้านบน มีโหนดสามโหนดที่ติดป้ายกำกับว่า "วิดีโอ" "เพิ่มดาว" และ "เพิ่มวงกลม"
พารามิเตอร์ของโหนด
โดยทั่วไปแล้ว โหนดจะมีพารามิเตอร์เพิ่มเติมที่กำหนดการทำงาน ของโหนดนั้น พารามิเตอร์เหล่านี้ได้รับการสนับสนุนโดยชนิดข้อมูล ใน ซอร์สโค้ดของ โหนด
ในทางคณิตศาสตร์ เราสามารถมองว่าค่าเหล่านี้เป็นค่าอินพุตเพิ่มเติมสำหรับฟังก์ชันการคำนวณของโหนด ความแตกต่างเพียงอย่างเดียวคือ ค่าเหล่านี้ถูกควบคุมโดยตรงโดยผู้ใช้ แทนที่จะเป็นค่าที่ส่งออกโดยโหนดอื่นเป็นผลพลอยได้จากการทำงาน ของมัน ตัวอย่างเช่น ในตัวอย่างง่ายๆ ข้างต้นเกี่ยวกับโหนดที่บวกตัวเลขสองตัว เราสามารถเพิ่มพารามิเตอร์ไบแอสให้กับโหนดเพื่อให้โหนดสามารถเพิ่มตัวเลขคงที่พิเศษเข้าไปในผลรวมได้
โดยทั่วไปแล้ว พารามิเตอร์ของโหนดจะปรากฏขึ้นหลังจากที่ผู้ใช้คลิกที่โหนดนั้น ซึ่งจะช่วยลดความรกของกราฟโหนดลงได้ ในแผนภาพด้านบน เราจะเห็นหน้าต่างแสดงพารามิเตอร์เปิดขึ้นข้างๆ โหนด "เพิ่มดาว"
อินพุตและเอาต์พุตของโหนด
ดังที่กล่าวมาข้างต้น โหนดมักมีอินพุตและเอาต์พุต อินพุตและเอาต์พุตนั้นได้รับการสนับสนุนโดยชนิด ข้อมูล ใน ซอร์สโค้ดของโหนด อินพุตและเอาต์พุตมีความสำคัญอย่างยิ่งต่อการจัดเก็บค่าก่อนและหลัง การทำงานของโหนด
ในทางคณิตศาสตร์ อินพุตและเอาต์พุตของโหนดนั้นเปรียบได้กับค่าอินพุตและเอาต์พุตของฟังก์ชัน
โดยที่คือค่าการคำนวณของโหนดคือเวกเตอร์ของค่าอินพุตของโหนด และคือเวกเตอร์ของค่าเอาต์พุตของโหนด
โดยทั่วไปแล้ว อินพุตและเอาต์พุตของโหนดมักแสดงด้วยวงกลม
ลิงก์โหนด
ลิงก์ทำหน้าที่ส่งผ่านค่าที่จัดเก็บไว้ในชนิดข้อมูลระหว่างโหนดต่างๆ เปรียบได้กับการประกอบกันทางคณิตศาสตร์ ตัวอย่างเช่น หากโหนด A ส่งเอาต์พุตไปยังโหนด B สามารถแสดงทางคณิตศาสตร์ได้ดังนี้
โดยที่และคือการดำเนินการที่กระทำโดยโหนด B และโหนด A ตามลำดับคือเวกเตอร์ของค่าอินพุตของโหนด A และคือเวกเตอร์ของค่าเอาต์พุตของโหนด B
ประเภทโหนด
ประเภทของโหนดบ่งบอกถึงการดำเนินการคำนวณที่โหนดนั้นจะดำเนินการเมื่อถูกเรียกใช้งาน โดยทั่วไปแล้วจะมีโหนดหลายประเภทที่เกี่ยวข้องในกราฟโหนด ตัวอย่างบางส่วนมีดังต่อไปนี้:
- Nuke ซึ่งเป็นโปรแกรม คอมโพสิตเอฟเฟกต์ภาพยอดนิยมประกอบด้วยโหนดหลายร้อยโหนด[ 10 ]โดยแต่ละโหนดจะทำหน้าที่เฉพาะที่เกี่ยวข้องกับการคอมโพสิต
- Katana ซึ่งเป็นซอฟต์แวร์ยอดนิยมสำหรับการจัดแสงและรูปลักษณ์ ประกอบด้วยโหนดหลายร้อยโหนด[ 11 ]โดยแต่ละโหนดจะทำหน้าที่เฉพาะที่เกี่ยวข้องกับการจัดแสงฉากกราฟิกคอมพิวเตอร์
- Mari ซึ่งเป็นซอฟต์แวร์วาดภาพ 3 มิติยอดนิยม ประกอบด้วยโหนดหลายร้อยโหนด[ 12 ]โดยแต่ละโหนดจะทำหน้าที่เฉพาะที่เกี่ยวข้องกับการวาดภาพ 3 มิติ
โหนดประเภทที่สำคัญที่สุดสำหรับการจัดการความซับซ้อนคือโหนดกลุ่ม โหนดประเภทนี้ไม่ได้ประมวลผลโค้ดซอฟต์แวร์เหมือนกับโหนดอื่นๆ โหนดนี้เพียงแค่จัดกลุ่มโหนดที่เชื่อมต่อกันบางส่วนเข้าด้วยกัน และจัดการอินพุตและเอาต์พุตเข้าหรือออกจากกลุ่ม ซึ่งจะซ่อนความซับซ้อนไว้ภายในโหนดกลุ่มและจำกัดการเชื่อมโยงกับโหนดอื่นๆ ภายนอกกลุ่ม ส่งผลให้เกิดลำดับชั้นที่กราฟขนาดเล็กกว่าถูกฝังอยู่ในโหนดกลุ่ม ต่อไปนี้เป็นตัวอย่างของโหนดกลุ่มที่ใช้ในการจัดกลุ่มโหนดที่เชื่อมต่อกันบางส่วนและช่วยลดความซับซ้อนของกราฟ
ส่วนติดต่อผู้ใช้
โดยทั่วไปแล้ว แอปพลิเคชันซอฟต์แวร์ที่ใช้สถาปัตยกรรมกราฟโหนดจะแสดงกราฟโหนดให้ผู้ใช้เห็นในรูปแบบภาพหรือกราฟิก ทำให้ผู้ใช้สามารถทำการเปลี่ยนแปลงกราฟโหนดได้โดยปกติแล้ว ผู้ใช้จะสามารถ ใช้ เมาส์ เพื่อทำสิ่งต่อไปนี้:
- สร้างโหนดใหม่
- แก้ไขพารามิเตอร์บนโหนด
- เชื่อมต่อโหนดเข้าด้วยกัน
- ประเมินกราฟจนถึงโหนดที่กำหนด
- ดูค่าเอาต์พุตปัจจุบันบนโหนดต่างๆ
ด้วยการใช้งานกราฟโหนดที่เพิ่มมากขึ้น ปัจจุบันจึงมีการให้ความสำคัญกับการสร้างอินเทอร์เฟซที่ใช้งานง่ายมากขึ้น บ่อยครั้งที่อินเทอร์เฟซใหม่เหล่านี้ได้รับการออกแบบโดยผู้เชี่ยวชาญด้านอินเทอร์เฟซผู้ใช้และนักออกแบบกราฟิก ต่อไปนี้คือตัวอย่างอินเทอร์เฟซผู้ใช้บางส่วนที่ออกแบบโดยศิลปินและนักออกแบบ
- กราฟโหนดบน Dribbble
- โหนดบน Dribbble
กราฟทิศทางที่ไม่มีวงจร

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

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

การใช้สถาปัตยกรรมกราฟโหนดในการออกแบบซอฟต์แวร์ได้รับความนิยมอย่างมากใน แอปพลิเคชัน การเรียนรู้ของเครื่องในช่วงไม่กี่ปีที่ผ่านมา แผนภาพด้านบนแสดงโครงข่ายประสาทเทียมอย่างง่ายที่ประกอบด้วย 3 ชั้น ได้แก่ ชั้นอินพุต ชั้นซ่อน และชั้นเอาต์พุต องค์ประกอบในแต่ละชั้นคือค่าน้ำหนักและเชื่อมต่อกับค่าน้ำหนักในชั้นอื่นๆ ในระหว่างการอนุมาน อัลกอริทึมการเรียนรู้ของเครื่องจะประเมินค่าน้ำหนักในชั้นเอาต์พุตผ่านลำดับการประเมินฟังก์ชันของค่าน้ำหนักจากชั้นก่อนหน้า ในระหว่างการฝึกฝน อัลกอริทึมการเรียนรู้ของเครื่องจะใช้การปรับให้เหมาะสมเพื่อลดฟังก์ชันความสูญเสียโดยที่ฟังก์ชันความสูญเสียขึ้นอยู่กับความแตกต่างระหว่างค่าน้ำหนักในชั้นเอาต์พุตและค่าที่คาดหวัง กราฟโหนดถูกใช้เพื่อแสดงภาพ กำหนดค่า และแก้ไขข้อผิดพลาดของชั้นโครงข่ายประสาทเทียมเหล่านี้
ต่อไปนี้เป็นตัวอย่างของซอฟต์แวร์การเรียนรู้ของเครื่อง ที่ใช้ สถาปัตยกรรมกราฟโหนดโดยไม่มีส่วนติดต่อผู้ใช้แบบกราฟิกสำหรับกราฟโหนด
- PyTorch, GitHub, Facebook
- เทนเซอร์โฟลว์, กิตฮับ, กูเกิล
ต่อไปนี้เป็นตัวอย่างซอฟต์แวร์การเรียนรู้ของเครื่อง ที่ใช้ สถาปัตยกรรมกราฟโหนด
- กราฟบุ๊ก, เซอร์เบรก
- เพอร์เซปติแล็บส์, เคดีนักเก็ตส์
- การรับรู้เชิงลึก, บริษัท การรับรู้เชิงลึก
- นักสร้างแบบจำลองเครือข่ายประสาทเทียม, IBM
- เครื่องเล่นเกม Neural Network Console ของ Sony
- ตัวเลข, nVIDIA
ดูเพิ่มเติม
หมายเหตุ
- ^ a b c Sutherland, William Robert (1966). การกำหนดรายละเอียดกราฟิกออนไลน์ของขั้นตอนการทำงานของคอมพิวเตอร์ (วิทยานิพนธ์). สถาบันเทคโนโลยีแมสซาชูเซตส์. hdl : 1721.1/13474?show=full .
- ^ a b c d e "ภาษาป้อนข้อมูลแบบกราฟิก GRAIL" (PDF )
- ^ Valverde, Sergi; Sole, Ricard V. (11 กรกฎาคม 2546). "Hierarchical Small Worlds in Software Architecture". arXiv : cond-mat/0307278 .
- ^ " การนำเสนอและการวิเคราะห์ซอฟต์แวร์" CiteSeerX 10.1.1.394.4865
{{cite journal}}: การอ้างอิงวารสารต้องใช้|journal=( ความช่วยเหลือ ) - ^ "การเขียนโปรแกรมแบบภาพไม่ใช่เรื่องแย่ "
- ^ "การเขียนโปรแกรมด้วยภาพ - ทำไมมันถึงเป็นความคิดที่ไม่ดี"ตุลาคม 2018
- ^ "จุดแข็งและจุดอ่อนของภาษาการเขียนโปรแกรมเชิงภาพในบริบทการเรียนรู้กับเด็ก" (PDF )
- ^ "การเขียนโปรแกรมเชิงภาพ: มุมมองจากแวดวงวิชาการและอุตสาหกรรม" 1997. doi : 10.1145/266399.266415 . S2CID 18983760 .
{{cite journal}}: การอ้างอิงวารสารต้องใช้|journal=( ความช่วยเหลือ ) - ^ Blackwell, AF (1996). "ทฤษฎีอภิปัญญาของการเขียนโปรแกรมภาพ: เราคิดว่าเรากำลังทำอะไรอยู่?". รายงานการประชุมสัมมนา IEEE ว่าด้วยภาษาภาพ ปี 1996หน้า 240–246 . doi : 10.1109/VL.1996.545293 . ISBN 0-8186-7508-X. S2CID 36822160 .
- ^ "คู่มืออ้างอิง Nuke" . learn.foundry.com . สืบค้นเมื่อ2020-12-21 .
- ^ "คู่มืออ้างอิงดาบคาตานะ" . learn.foundry.com . สืบค้นเมื่อ2020-12-21 .
- ^ "คู่มืออ้างอิง Mari" . learn.foundry.com . สืบค้นเมื่อ2020-12-21 .
- ^ "Nuke: การจัดกลุ่มโหนดด้วย Group Node" . learn.foundry.com . สืบค้นเมื่อ2020-12-21 .
- ^ "Katana: การจัดกลุ่มโหนด" . learn.foundry.com . สืบค้นเมื่อ2020-12-21 .
สรุปเนื้อหา
ข้อมูลสำคัญจากบทความ
ข้อมูลสำคัญเกี่ยวกับ สถาปัตยกรรมกราฟโหนด
สถาปัตยกรรมกราฟโหนดเป็นโครงสร้างการออกแบบซอฟต์แวร์ที่ยึดแนวคิดของกราฟโหนด เป็นหลัก ทั้งซอร์สโค้ดและส่วนติดต่อผู้ใช้ได้ รับการออกแบบโดยคำนึงถึงการแก้ไขและการประกอบ...
ประวัติศาสตร์
ปัจจุบัน Eric Hosickกำลังรวบรวมภาพรวมของอินเทอร์เฟซผู้ใช้แบบกราฟโหนดใน แอปพลิ เคชันซอฟต์แวร์ส่วนใหญ่ บน เว็บไซต์ X ความพยายามนี้มีจุดมุ่งหมายเพื่อบันทึกวิวัฒนาการและการพัฒนาอย่างรวดเร็วของอินเทอร์เฟซผู้ใช้แบบกราฟโหนดตั้งแต่จุดเริ่มต้น...
นามธรรมและความซับซ้อน
ในบทความ Hierarchical Small Worlds in Software Architecture [ 3 ] ผู้เขียน Sergi Valverde โต้แย้งว่าระบบซอฟต์แวร์ขนาดใหญ่ส่วนใหญ่ถูกสร้างขึ้นในลักษณะโมดูลาร์และลำดับชั้น และสามารถใช้กราฟโหนดในการวิเคราะห์ระบบซอฟต์แวร์ขนาดใหญ่ได้ บทความวิเคราะห์ซอฟต์แวร์อื่นๆ...
การถกเถียงเรื่องการเขียนโปรแกรมเชิงภาพ
กราฟโหนด เป็นส่วนย่อยของกลุ่ม ภาษาการเขียนโปรแกรมเชิงภาพ ที่กว้างกว่า กราฟโหนดช่วยให้คุณออกแบบโปรแกรมในรูปแบบที่เป็นภาพและมีโครงสร้าง แทนที่จะเขียน โค้ดต้นฉบับ ใน อุตสาหกรรม ภาพยนตร์ และ วิดีโอเกม กราฟโหนดมีความหมายเหมือนกันกับการเขียนโปรแกรมเชิงภาพ...