Simpul atau node adalah satuan dasar yang digunakan untuk merepresentasikan unsur dalam berbagai struktur pada ilmu komputer, terutama dalam struktur data, teori graf, jaringan komputer, dan Document Object Model (DOM). Dalam struktur data, simpul umumnya memuat data dan satu atau lebih rujukan ke simpul lain. Rujukan tersebut dapat diwujudkan sebagai penunjuk, referensi objek, indeks larik, atau bentuk hubungan lain yang bergantung pada bahasa pemrograman dan model penyimpanan yang digunakan.[1]
Makna simpul tidak selalu sama pada setiap bidang. Dalam senarai berantai, simpul adalah unsur yang menyimpan nilai dan rujukan ke unsur berikutnya. Dalam pohon, simpul membentuk hubungan hierarkis seperti akar, anak, induk, dan daun. Dalam teori graf, simpul disebut juga verteks dan dihubungkan oleh sisi. Dalam pengembangan web, simpul merujuk kepada objek dalam pohon DOM yang merepresentasikan bagian-bagian dokumen HTML atau XML.[2][3][4]
Dalam teori graf, setiap titik dapat disebut simpul atau verteks, sedangkan garis yang menghubungkannya disebut sisi.
Dalam struktur data
Dalam struktur data, simpul adalah wadah logis yang menyimpan informasi. Informasi tersebut dapat berupa nilai tunggal, kumpulan atribut, objek, status, atau rujukan ke struktur lain. Sebuah simpul dapat berdiri sendiri, tetapi lebih sering digunakan sebagai bagian dari struktur yang lebih besar.
Secara umum, sebuah simpul dapat memuat:
data, yaitu nilai atau informasi yang disimpan;
rujukan, yaitu hubungan ke simpul lain;
metadata, seperti bobot, indeks, warna, tanda kunjungan, atau status tertentu;
rujukan balik, jika struktur data memerlukan hubungan dua arah.
Contoh sederhana simpul dalam senarai berantai dapat digambarkan sebagai berikut:
structNode{intdata;structNode*next;};
Pada contoh tersebut, setiap simpul menyimpan sebuah nilai bertipe bilangan bulat dan sebuah penunjuk ke simpul berikutnya. Jika tidak ada simpul berikutnya, penunjuk tersebut biasanya bernilai kosong atau null.
Dalam senarai berantai
Dalam senarai berantai, simpul merupakan unsur penyusun utama. Setiap simpul menyimpan data dan rujukan ke simpul lain. Senarai berantai tunggal memiliki rujukan ke simpul berikutnya, sedangkan senarai berantai ganda memiliki rujukan ke simpul sebelumnya dan simpul berikutnya.[5]
Sebuah senarai berantai biasanya diakses melalui simpul pertama yang disebut kepala atau head. Dari simpul kepala, program dapat menelusuri simpul-simpul berikutnya sampai mencapai akhir senarai. Karena aksesnya mengikuti rujukan satu per satu, pencarian pada senarai berantai biasa umumnya bersifat linear.[5]
Struktur simpul pada senarai berantai dapat digunakan untuk membangun struktur data lain, seperti tumpukan, antrean, dan beberapa bentuk struktur data dinamis lainnya.[5]
Dalam pohon
Contoh pohon biner yang terdiri atas beberapa simpul. Simpul paling atas disebut akar.
Dalam pohon, simpul-simpul disusun secara hierarkis. Satu simpul khusus disebut akar atau root, yaitu simpul yang tidak memiliki simpul induk. Simpul lain berada di bawah akar dan dapat memiliki hubungan induk-anak dengan simpul lain.[2][6]
Dalam pohon, setiap simpul selain akar memiliki tepat satu induk. Simpul yang memiliki anak disebut simpul internal, sedangkan simpul yang tidak memiliki anak disebut daun atau leaf.[2][7]
Beberapa istilah penting dalam pohon antara lain:
Akar atau root, yaitu simpul tertinggi yang menjadi titik awal pohon.
Anak atau child, yaitu simpul yang berada langsung di bawah simpul lain.
Induk atau parent, yaitu simpul yang memiliki rujukan langsung ke simpul anak.[8]
Saudara atau sibling, yaitu simpul-simpul yang memiliki induk yang sama.
Daun atau leaf, yaitu simpul tanpa anak.
Simpul internal, yaitu simpul yang memiliki setidaknya satu anak.
Derajat simpul, yaitu jumlah anak yang dimiliki sebuah simpul.
Kedalaman atau depth, yaitu jarak sebuah simpul dari akar.
Tinggi atau height, yaitu panjang lintasan terjauh dari simpul tersebut menuju daun.
Subpohon atau subtree, yaitu pohon yang terbentuk dari suatu simpul beserta seluruh keturunannya.
Hutan atau forest, yaitu kumpulan satu atau lebih pohon yang terpisah.
Dalam teori graf, simpul adalah unsur yang merepresentasikan objek, entitas, titik, keadaan, atau lokasi. Hubungan antara simpul direpresentasikan oleh sisi. Secara formal, graf dapat dinyatakan sebagai pasangan , dengan sebagai himpunan simpul dan sebagai himpunan sisi yang menghubungkan simpul-simpul tersebut.[3][9]
Dalam konteks graf, istilah simpul sering disamakan dengan verteks. Jika dua simpul dihubungkan oleh sebuah sisi, keduanya disebut bertetangga atau bersebelahan. Jumlah sisi yang bersisian dengan sebuah simpul disebut derajat simpul. Pada graf berarah, dikenal pula istilah derajat masuk dan derajat keluar.[3][9]
Graf dapat bersifat:
tak berarah, jika hubungan antarsimpul tidak memiliki arah;
berarah, jika sisi memiliki arah dari satu simpul ke simpul lain;
berbobot, jika sisi atau simpul memiliki nilai tertentu;
berlabel, jika simpul atau sisi memiliki nama atau identitas tambahan;
siklik, jika terdapat lintasan yang kembali ke simpul awal;
Representasi graf dalam program dapat dilakukan dengan beberapa cara, antara lain:
senarai ketetanggaan atau adjacency list, yaitu setiap simpul menyimpan senarai simpul tetangganya;
matriks ketetanggaan atau adjacency matrix, yaitu hubungan antarsimpul dinyatakan dalam bentuk matriks;
senarai sisi atau edge list, yaitu graf disimpan sebagai kumpulan pasangan simpul.
Graf digunakan untuk memodelkan berbagai sistem, seperti jaringan komputer, jaringan sosial, peta jalan, hubungan dependensi, alur kerja, rute pengiriman, sistem rekomendasi, dan struktur hubungan dalam basis data graf.[9]
Dalam jaringan komputer
Dalam jaringan komputer, simpul jaringan atau network node adalah perangkat, titik koneksi, atau sistem yang dapat berpartisipasi dalam komunikasi jaringan. Contohnya adalah komputer, peladen, pencetak jaringan, switch, router, titik akses nirkabel, dan perangkat Internet of Things. Dalam konteks ini, simpul tidak harus berarti struktur data di memori, melainkan entitas fisik atau logis yang dapat mengirim, menerima, meneruskan, atau memproses data.[10][11]
Pada jaringan berbasis protokol internet, sebuah simpul biasanya memiliki identitas jaringan, seperti alamat IP atau alamat lapisan taut data, agar dapat dikenali dalam proses komunikasi. Namun, alamat IP lebih tepat dipahami sebagai alamat antarmuka jaringan atau hos, bukan sebagai simpul struktur data.
Istilah simpul jaringan sering digunakan dalam pembahasan:
Dalam Document Object Model atau DOM, simpul adalah objek yang menyusun struktur pohon dokumen. Ketika peramban web membaca dokumen HTML atau XML, dokumen tersebut direpresentasikan sebagai pohon DOM. Setiap bagian dokumen, seperti elemen, atribut, teks, komentar, dan dokumen itu sendiri, dapat direpresentasikan sebagai simpul.[4][12]
DOM memungkinkan program, terutama JavaScript, untuk membaca, mengubah, menambah, atau menghapus bagian-bagian dokumen secara dinamis. Misalnya, sebuah elemen paragraf dalam HTML dapat diperlakukan sebagai simpul elemen, sedangkan teks di dalam paragraf tersebut dapat diperlakukan sebagai simpul teks.
Dalam standar DOM, objek yang mengimplementasikan antarmuka Node dapat berupa beberapa jenis objek yang lebih khusus, antara lain Document, DocumentType, DocumentFragment, Element, Attr, Text, Comment, CDATASection, dan ProcessingInstruction.[4][13]
Jenis simpul DOM
Beberapa jenis simpul dalam DOM antara lain:
Jenis simpul
Keterangan
Document
Merepresentasikan keseluruhan dokumen.
DocumentType
Merepresentasikan deklarasi tipe dokumen.
DocumentFragment
Merepresentasikan fragmen dokumen ringan yang dapat berisi beberapa simpul.
Element
Merepresentasikan elemen, seperti <html>, <body>,
, atau
.
Attr
Merepresentasikan atribut pada elemen.
Text
Merepresentasikan isi teks dalam elemen atau atribut.
Comment
Merepresentasikan komentar dalam dokumen.
CDATASection
Merepresentasikan bagian CDATA dalam dokumen XML.
ProcessingInstruction
Merepresentasikan instruksi pemrosesan dalam dokumen XML.
Beberapa implementasi DOM juga menyediakan nilai numerik untuk properti nodeType. Nilai tersebut digunakan untuk membedakan jenis simpul, misalnya ELEMENT_NODE untuk simpul elemen, TEXT_NODE untuk simpul teks, dan DOCUMENT_NODE untuk simpul dokumen.[13]
Nilai nodeType
Konstanta
1
ELEMENT_NODE
2
ATTRIBUTE_NODE
3
TEXT_NODE
4
CDATA_SECTION_NODE
7
PROCESSING_INSTRUCTION_NODE
8
COMMENT_NODE
9
DOCUMENT_NODE
10
DOCUMENT_TYPE_NODE
11
DOCUMENT_FRAGMENT_NODE
Beberapa nilai lama seperti ENTITY_REFERENCE_NODE, ENTITY_NODE, dan NOTATION_NODE pernah digunakan dalam spesifikasi DOM terdahulu, tetapi tidak lagi digunakan dalam DOM modern.[13]
Perbedaan penggunaan istilah
Istilah simpul memiliki makna yang saling berdekatan, tetapi tidak identik. Dalam struktur data, simpul biasanya merujuk pada unit penyimpanan data. Dalam graf, simpul adalah titik abstrak yang dihubungkan oleh sisi. Dalam jaringan komputer, simpul adalah perangkat atau titik koneksi. Dalam DOM, simpul adalah objek yang menjadi bagian dari pohon dokumen.
Bidang
Makna simpul
Contoh
Struktur data
Unit yang menyimpan data dan rujukan
Simpul pada senarai berantai
Pohon
Elemen hierarkis dalam struktur akar-anak
Akar, anak, daun
Graf
Verteks yang dihubungkan oleh sisi
Kota dalam graf peta jalan
Jaringan komputer
Perangkat atau titik koneksi jaringan
Komputer, router, peladen
DOM
Objek dalam pohon dokumen
Elemen HTML, teks, komentar
Operasi umum
Operasi yang melibatkan simpul bergantung pada struktur yang digunakan. Beberapa operasi umum antara lain:
membuat simpul baru;
menyisipkan simpul ke dalam struktur;
menghapus simpul;
mencari simpul berdasarkan nilai atau kunci;
menelusuri simpul;
menghubungkan dua simpul;
memutus hubungan antarsimpul;
memperbarui data dalam simpul.
Pada pohon dan graf, penelusuran simpul sering dilakukan dengan algoritme seperti pencarian melebar dan pencarian mendalam. Pada senarai berantai, penelusuran biasanya dilakukan secara berurutan dari kepala menuju simpul berikutnya.
Representasi dalam memori
Representasi simpul dalam memori dapat berbeda-beda. Pada struktur berbasis penunjuk, setiap simpul disimpan sebagai objek atau rekaman yang memiliki alamat tersendiri. Hubungan antarsimpul disimpan sebagai alamat atau referensi. Pendekatan ini fleksibel, tetapi dapat menimbulkan biaya tambahan karena setiap simpul memerlukan ruang untuk menyimpan rujukan.
Pada struktur berbasis larik, simpul dapat direpresentasikan dengan indeks. Misalnya, sebuah graf dapat disimpan dalam matriks ketetanggaan, sedangkan sebuah pohon biner lengkap dapat disimpan dalam larik dengan rumus indeks tertentu. Pendekatan berbasis larik dapat lebih efisien dalam penggunaan lokalitas memori, tetapi kurang fleksibel untuk struktur yang sering berubah ukuran.
Contoh penggunaan
Simpul digunakan dalam banyak bidang ilmu komputer, antara lain:
↑Black, Paul E. (17 Desember 2004). "node". Dictionary of Algorithms and Data Structures (dalam bahasa Inggris). National Institute of Standards and Technology. Diakses tanggal 2 Juni 2026.
123Black, Paul E. (15 Desember 2017). "tree". Dictionary of Algorithms and Data Structures (dalam bahasa Inggris). National Institute of Standards and Technology. Diakses tanggal 2 Juni 2026.
123Black, Paul E.; Tanenbaum, Paul J. (18 Juli 2022). "graph". Dictionary of Algorithms and Data Structures (dalam bahasa Inggris). National Institute of Standards and Technology. Diakses tanggal 2 Juni 2026.
123"DOM Standard" (dalam bahasa Inggris). WHATWG. Diakses tanggal 2 Juni 2026.
123Black, Paul E. (24 Januari 2022). "linked list". Dictionary of Algorithms and Data Structures (dalam bahasa Inggris). National Institute of Standards and Technology. Diakses tanggal 2 Juni 2026.
↑"General Trees". OpenDSA Data Structures and Algorithms Modules Collection (dalam bahasa Inggris). Virginia Tech. Diakses tanggal 2 Juni 2026.
↑Black, Paul E. (3 Juni 2005). "leaf". Dictionary of Algorithms and Data Structures (dalam bahasa Inggris). National Institute of Standards and Technology. Diakses tanggal 2 Juni 2026.
↑Black, Paul E. (4 November 2004). "parent". Dictionary of Algorithms and Data Structures (dalam bahasa Inggris). National Institute of Standards and Technology. Diakses tanggal 2 Juni 2026.
123"Graphs Chapter Introduction". OpenDSA Data Structures and Algorithms Modules Collection (dalam bahasa Inggris). Virginia Tech. Diakses tanggal 2 Juni 2026.
↑Forouzan, Behrouz A. (2013). Data Communications and Networking (Edisi 5th). McGraw-Hill. ISBN978-0-07-337622-6.
↑"network". Computer Security Resource Center Glossary (dalam bahasa Inggris). National Institute of Standards and Technology. Diakses tanggal 2 Juni 2026.