Ringkasan 01 dari buku “The Art of Computer Programming, Vol.1” by Donald E. Knuth.

Hans Beaver
22 min readDec 30, 2022

--

Book Covers

Chapter 1 : Basic Concept .

1.1. Algorithms

Bentuk dari penemuan kata algorithm yang lebih tua disebut sebagai “algorism” dengan arti kuno, proses melakukan aritmatika menggunakan angka Arab. Selama abad pertengahan, abacist menghitung dengan sempoa dan algorithm menghitung dengan algorism. Akhirnya para sejarawan menemukan asal muasal sebenarnya dari kata algorism: itu berasal dari nama seorang penulis buku teks terkenal Persia, Abu ‘Abd Allah Muhammad ibn Musa Al-Khawarizmi. Al-Khawarizmi menulis teks Arab terkenal Kitab Al-jabr Wa’l Muqabala; kata lain Aljabar berasal dari buku tersebut, yang merupakan solusi sistematis tentang persamaan linier dan kuadrat.

Pada tahun 1950, kata algorithm paling sering dikaitkan dengan algoritma Euclid, suatu proses untuk menemukan pembagi persekutuan terbesar dalam dua bilangan yang muncul dalam Element Euclid. Berikut menunjukkan algorithm dari Euclid :

Diberikan dua bilangan positif m dan n, temukan pembagi bersama terbesarnya, yaitu bilangan bulat positif terbesar yang membagi rata m dan n.

E1. [Temukan sisa.] Bagilah m dengan n dan biarkan r menjadi sisanya. (kita akan memiliki 0 ≤ r < n.)

E2. [Apakah nol ?] Jika r = 0, algoritma berhenti; n adalah jawabannya.

E3. [Reduce.] Tetapkan m ← n, n ← r, dan kembali ke langkah E1.

Format diatas mengilustrasikan gaya di mana semua algoritme di seluruh buku ini akan disajikan.

Setiap algoritma telah diberi huruf pengenal, dan langkah-langkah algoritma diidentifikasikan dengan huruf ini diikuti dengan angka (E1, E2, E3). Bab-bab tersebut dibagi menjadi beberapa bagian nomor.; dalam suatu bagian, algoritme ditunjuk dengan huruf saja, tetapi ketika algoritma dirujuk di bagian lain, nomor bagian yang sesuai dilampirkan. Misalnya, kita sekarang berada di bagian 1.1; dalam bagian ini algoritma Euclid disebut algoritma E, sementara di bagian selanjutnya disebut sebagai algoritma 1.1E.

Setiap langkah dari suatu algoritma, seperti langkah E1 diatas, dimulai dengan frase dalam tanda kurung yang meringkas sesingkat mungkin konten utama dari langkah tersebut . Frase ini juga biasa muncul dalam Flow Chart yang menyertainya, seperti gambar dibawah.

Flow Chart untuk Algoritma E.

Setelah frase ringkasan, muncul deskripsi dalam kata-kata dan simbol dari beberapa tindakan yang harus dilakukan atau beberapa keputusan yang harus dibuat. Juga terdapat komentar dalam tanda kurung, seperti kalimat kedua pada langkah E1. Komentar disertakana sebagai informasi penjelas tentang langkah tersebut, sering kali menunjukkan karakteristik invarian tertentu dari variable atau tujuan saat ini. Komentar tidak menentukan tindakan yang termasuk dalam algoritma, tetapi dimaksudkan hanya untuk kepentingan pembaca sebagai bantuan yang mungkin untuk pemahaman terkait.

The arrow (panah)“ ← ” pada langkah E3 adalah operasi pengganti yang sangat penting, terkadang disebut Assignment atau Subtitution: “m ← n” berarti bahwa nilai variabel m harus diganti dengan nilai variabel n saat ini. Ketika algoritma E dimulai, nilai m dan n adalah angka awal yang dideklarasikan; tetapi ketika itu berakhir, variabel-variabel itu pada umumnya akan memiliki nilai yang berbeda. Arrow digunakan untuk membedakan operasi penggantian dari equality relation (relasi persamaan). Kita tidak akan mengatakan, “Set m = n” tetapi kita mungkin akan bertanya, “Apakah m = n ?” Tanda “ = “ menunjukkan kondisi yang dapat diuji, tanda “ ← ” menunjukkan tindakan yang dapat dilakukan. Operasi peningkatan n dengan satu dilambangkan dengan “ n ← n + 1 “ (baca “n diganti dengan n + 1” atau “n mendapat n + 1”). Secara umum, “variabel ← rumus“ berarti bahwa rumus tersebut harus dihitung dengan menggunakan nilai sekarang dari setiap variabel yang muncul di dalamnya; maka hasilnya harus menggantikan nilai variabel sebelumnya di sebelah kiri arrow. Orang yang tidak terlatih dalam pekerjaan komputer kadang memiliki kecenderungan untuk mengatakan “n menjadi n + 1” dan menulis “n → n + 1” untuk operasi peningkatan n per satu; simbolisme ini hanya dapat menyebabkan kebingungan karena bertentangan dengan konvensi standar, dan harus dihindari.

Perhatikan bahwa urutan tindakan pada langkah E3 penting: “Set m ← n, n ← r” sangat berbeda dari “Set n ← r, m ← n,” karena yang terakhir akan menyiratkan bahwa nilai n sebelumnya hilang sebelum dapat digunakan untuk mengatur m. Jadi urutan terakhir setara dengan “Set n ← r, m ← r.” Ketika beberapa variabel semuanya diatur sama dengan jumlah yang sama, kita dapat menggunakan banyak arrow; misalnya, “n ← r, m ← r” dapat ditulis “n ← m ← r.” Untuk menukar nilai dua variabel, kita dapat menuliskan “Tukarkan m ↔ n”; aksi ini juga dapat ditentukan dengan menggunakan variabel baru t dan menulis “Set t ← m, m ← n, n ← t.”

Algoritma dimulai dari angka bernomor terendah, biasanya langkah 1, dan melakukan langkah selanjutnya secara berurutan. Pada langkah E3, imperatif “kembali ke langkah E1” menentukan urutan komputasi dengan cara yang jelas. Pada langkah E2, aksi diawali dengan kondisi “Jika r = 0”; jadi jika r ̸= 0, sisa kalimat itu tidak berlaku dan tidak ada tindakan yang ditentukan. Kita mungkin telah menambahkan kalimat berlebihan, “Jika r ̸= 0, lanjutkan ke langkah E3.”

Garis vertikal tebal yang muncul diakhir langkah E3 digunakan untuk menunjukkan akhir dari suatu algoritma dan dimulainya kembali teks.

Notasi yang digunakan untuk menunjukkan item “subscripted” atau “indexed” yang merupakan element dari ordered array (array terurut). Misalkan kita memiliki n kuantitas, v1, v2 …… vn; alih alih menulis vj untuk elemen ke-j, notasi v[j] sering digunakan. Demikian pula, a[i,j] kadang-kadang digunakan sebagai preferensi untuk notasi bersubskrip ganda seperti aij. Terkadang nama dengan banyak huruf digunakan untuk variabel, biasanya diatur dalam huruf kapital; dengan demikian TEMP mungkin nama variabel yang digunakan untuk menyimpan sementara nilai yang dihitung, PRIME[K] mungkin menunjukkan bilangan prima Kth dan seterusnya.

Suatu algoritma harus dilihat untuk dapat dipercaya dan cara terbaik untuk mempelajari apa itu algoritma adalah dengan mencobanya.

Mari kita buat contoh algoritma E. Misalkan kita diberi m = 119 dan n = 544; kita siap untuk memulai, pada langkah E1. Membagi m dengan n dalam kasus ini cukup sederhana, karena hasil bagi adalah 0 dan sisanya adalah 119. Jadi, r ← 119. Kita lanjutkan ke langka E2 dan karena r ̸= 0 tidak ada aksi yang terjadi. Pada langkah E3 kita menetapkan m ← 544, n ← 119. Jelas jika bahwa m < n awalnya, hasil bagi pada langkah E1 akan selalu nol dan algoritma akan selalu melanjutkan untuk menukar m dan n dengan cara yang agak rumit ini. Kita bisa menyisipkan langkah baru diawal :

E0. [Pastikan m ≥ n.] jika m < n, tukarkan m ↔ n.

Ini tidak akan membuat perubahan penting dalam algoritma, kecuali untuk sedikit menambah panjangnya dan untuk mengurangi waktu berjalannya di sekitar setengah dari semua kasus.

Kembali ke langkah E1, kita menemukan bahwa 544/119 = 4 + 68/119, jadi r ← 68. Sekali lagi E2 tidak dapat diterapkan dan pada E3 kami menetapkan m ← 119, n ← 68. Putaran berikutnya menetapkan r ← 51 dan akhirnya m ← 68, n ← 51. Selanjutnya r ← 17 dan m ← 51, n ← 17. Akhirnya, ketika 51 dibagi dengan 17, kita menetapkan r ← 0, sehingga pada langkah E2 algoritma berhenti. Pembagi persekutuan terbesar dari 119 dan 544 adalah 17.

Jadi ini adalah algoritma. Arti modern untuk algoritma sangat mirip dengan resep, proses, metode, teknik, prosedur, rutinitas, omong kosong, kecuali kata “algoritma” berkonotasi sesuatu yang sedikit berbeda. Selain hanya menjadi seperangkat aturan terbatas yang memberikan urutan operasi untuk memecahkan jenis masalah tertentu, sebuah algoritma memiliki lima fitur penting :

1. Finiteness (Keterbatasan).

Algoritma harus selalu berhenti setelah sejumlah langkah terbatas. Algoritma E memenuhi kondisi ini, karena setelah langkah E1 nilai r kurang dari n; jadi jika r ̸= 0, nilai n berkurang saat langkah berikutnya E1 ditemui. Urutan bilangan bulat positif yang menurun pada akhirnya harus diakhiri, jadi langkah E1 dijalankan hanya beberapa kali untuk setiap nilai asli n yang diberikan. Perhatikan, bagaimanapun bahwa jumlah langkah bisa menjadi besar secara acak; pilihan besar m dan n tertentu akan menyebabkan langkah E1 dieksekusi lebih dari satu juta kali.

( Prosedur yang memiliki semua karakteristik algoritma kecuali yang mungkin kurang terbatas dapat disebut Computational Method (metode komputasi). Euclid awalnya menyajikan tidak hanya algoritma untuk pembagi persekutuan terbesar dari bilangan, tetapi juga konstruksi geometris yang sangat mirip untuk “ukuran umum terbesar” dari panjang dua segmen garis; ini adalah metode komputasi yang tidak berhenti jika panjang yang diberikan tidak dapat dibandingkan. Contoh lain dari nonterminating computational method adalah proses reaktif, yang terus berinteraksi dengan lingkuannya. )

2. Definiteness (Kepastian).

Setiap langkah dari suatu algoritma harus didefinisikan dengan tepat; tindakan yang akan dilakukan harus ditentukan secara ketat dan jelas untuk setiap kasus. Bahasa pemrograman atau bahasa komputer yang didefinisikan secara formal dirancang untuk menentukan algoritma, dimana setiap pernyataan memiliki arti yang sangat pasti. Ekspresi metode komputasi dalam bahasa komputer disebut program.

Pada kenyataannya, tidak ada kesepakatan universal tentang apa artinya jika m dan n bukan bilangan bulat positif; berapakah sisa dari −8 dibagi −π? Berapakah sisa dari 59/13 dibagi nol? Oleh karena itu kriteria ketetapan berarti kita harus memastikan bahwa nilai m dan n selalu bilangan bulat positif setiap kali langkah E1 akan dijalankan. Ini awalnya benar, dengan hipotesis; dan setelah langkah E1, r adalah bilangan bulat bukan negatif yang harus bukan nol jika kita sampai ke langkah E3. Jadi m dan n memang bilangan bulat positif seperti yang dipersyaratkan.

3. Input (Masukan).

Algoritma memiliki nol atau lebih input; jumlah yang diberikan pada awalnya sebelum algoritma dimulai atau secara dinamis saat algoritma berjalan. Input ini diambil dari kumpulan objek tertentu. Pada algoritma E misalnya, terdapat dua input yaitu m dan n, keduanya diambil dari himpunan bilangan bulat positif.

4. Output (Keluaran).

Algoritma memiliki satu atau lebih output: jumlah yang memiliki hubungan tertentu dengan input. Algoritma E memiliki satu output, yaitu n pada langkah E2, pembagi persekutuan terbesar dari kedua input.

( Kita dapat dengan mudah membuktikan bahwa bilangan ini memang pembagi persekutuan terbesar, sebagai berikut. Setelah langkah E1, kita memiliki =

m = qn + r,

untuk beberapa bilangan bulat q. Jika r = 0, maka m adalah kelipatan dari n dan jelas dalam kasus seperti itu n adalah pembagi persekutuan terbesar dari m dan n. Jika r ̸= 0, perhatikan bahwa bilangan apapun yang membagi m dan n harus membagi m-qn = r dan bilangan apapun yang membagi n dan r harus membagi qn + r = m; jadi himpunan pembagi persekutuan dari m dan n sama dengan himpunan pembagi persekutuan dari n dan r. Secara khusus, pembagi persekutuan terbesar dari n dan r. Oleh karena itu langkah E3 tidak mengubah jawaban dari soal aslinya. )

5. Effectiveness (Efektivitas).

Algoritma juga secara umum diharapkan efektif, dalam arti bahwa semua operasinya harus cukup mendasar sehingga pada prinsipnya dapat dilakukan dengan tepat dan dalam waktu yang terbatas oleh seseorang menggunakan pensil dan kertas. Algoritma E hanya menggunakan operasi membagi satu bilangan bulat positif dengan yang lain, menguji apakah bilangan bulat adalah nol dan menyetel nilai satu variabel sama dengan nilai variabel lainnya. Operasi ini efektif, karena bilangan bulat dapat direpresentasikan diatas kertas dengan cara yang terbatas, dan karena setidaknya ada satu metode (the “division algorithm”) / (algoritma pembagian) untuk membagi satu dengan yang lain. Tetapi operasi yang sama tidak akan efektif jika nilai yang terlibat adalah bilangan real arbitrer yang ditentukan oleh perluasan desimal tak terhingga, atau jika nilainya adalah panjang segmen garis fisik (yang tidak dapat ditentukan secara tepat). Contoh lain dari langkah yang tidak efektif adalah, “Jika 4 adalah bilangan bulat terbesar n yang penyelesaian persamaannya

dalam bilangan bulat positif w, x, y, and z, lanjutkan ke langkah E4.” Pernyataan seperti itu tidak akan menjadi operasi yang efektif sampai seseorang berhasil membangun sebuah algoritma untuk menentukan apakah 4 adalah atau bukan bilangan bulat terbesar dengan properti yang dinyatakan.

Mari coba kita bandingkan konsep algoritma dengan konsep buku masak. Sebuah resep mungkin memiliki qualities of finiteness / kualitas keterbatasan (walaupun dikatakan bahwa panci yang diawasi tidak pernah mendidih), input (telur, tepung, dll.), dan output (makan malam TV, dll.), tetapi resep tersebut terkenal kurang pasti. Sering ada kasus di mana instruksi juru masak tidak jelas: “Add a dash of salt.” Sebuah “dash” didefinisikan sebagai “kurang dari 1/8 sendok teh”, dan salt mungkin didefinisikan dengan cukup baik; tetapi di mana salt harus ditambahkan — di atas? di samping? Instruksi seperti “aduk perlahan sampai campurannya rapuh” atau “cognac hangat dalam panci kecil” cukup memadai sebagai penjelasan untuk koki terlatih, tetapi algoritma harus ditentukan sedemikian rupa sehingga komputer pun dapat mengikuti petunjuknya. Meskipun demikian, seorang pemrogram komputer dapat belajar banyak dengan mempelajari buku resep yang bagus.

Kita harus berkomentar bahwa the finiteness restriction (larangan keterbatasan) tidak cukup kuat untuk penggunaan praktis. Algoritma yang berguna seharusnya tidak hanya membutuhkan jumlah langkah yang terbatas, tetapi juga jumlah yang sangat terbatas, jumlah yang masuk akal. Sebagai contoh, ada sebuah algoritma yang menentukan apakah permainan catur selalu dapat dimenangkan oleh Putih jika tidak ada kesalahan yang dibuat. Algoritma itu dapat memecahkan masalah yang sangat menarik bagi ribuan orang, namun merupakan taruhan yang aman bahwa kita tidak akan pernah tahu jawabannya seumur hidup kita; algoritma membutuhkan waktu yang sangat besar untuk pelaksana-annya, meskipun terbatas.

Kita menginginkan algoritma yang bagus dalam pengertian estetika yang didefinisikan secara longgar. Salah satu kriteria kebaikan adalah lamanya waktu yang dibutuhkan untuk melakukan algoritma; ini dapat dinyatakan dalam berapa kali setiap langkah dijalankan. Kriteria lainnya adalah kemampuan adaptasi dari algoritma untuk berbagai jenis komputer, kesederhanaan dan keanggunannya, dll.

Kita sering dihadapkan pada beberapa algoritma untuk masalah yang sama, dan kita harus memutuskan mana yang terbaik. Hal ini membawa kita ke dalam bidang algorithmic analysis (analisis algoritmik) yang sangat menarik dan sangat penting: Mengingat suatu algoritma, kita ingin menentukan karakteristik kinerjanya.

Sebagai contoh, mari pertimbangkan algoritma Euclid dari sudut pandang ini. Misalkan kita mengajukan pertanyaan, “Dengan asumsi bahwa nilai n diketahui tetapi m diizinkan untuk mencakup semua bilangan bulat positif, berapa average(rata-rata) berapa kali, Tn, langkah E1 dari algoritma E akan dilakukan?” Pertama-tama, kita perlu memeriksa apakah pertanyaan ini memiliki jawaban yang berarti, karena kita mencoba mengambil rata-rata dari banyak pilihan untuk m. Tetapi terbukti bahwa setelah pelaksanaan pertama dari langkah E1 hanya sisa m setelah pembagian dengan n yang relevan. Jadi yang harus kita lakukan untuk mencari Tn adalah mencoba algoritma untuk m = 1, m = 2, . . . , m = n, hitung berapa kali langkah E1 telah dijalankan, dan bagi dengan n.

Sekarang pertanyaan pentingnya adalah menentukan sifat dari Tn; apakah kira-kira sama dengan 1/3 n, atau √ n, misalnya? Faktanya, jawaban untuk pertanyaan ini adalah masalah matematika yang sangat sulit dan menarik, belum sepenuhnya terselesaikan. Untuk nilai n yang besar dapat dibuktikan bahwa Tn mendekati 12(ln 2)/π2 Dalam n, yaitu sebanding dengan logaritma natural dari n, dengan konstanta proporsionalitas yang mungkin tidak dapat ditebak begitu saja!

Analisis algoritma adalah nama yang suka digunakan untuk mendeskripsikan dalam vestigasi seperti ini. Gagasan umumnya adalah mengambil algoritma tertentu dan menentukan perilaku kuantitatifnya; terkadang kami juga mempelajari apakah suatu algoritma optimal atau tidak dalam arti tertentu. Teori algoritma adalah subjek yang sama sekali berbeda, terutama berurusan dengan keberadaan atau ketiadaan algoritma yang efektif untuk menghitung jumlah tertentu.

Glossary penting yang terdapat pada chapter ini.

Saya akan mengkaji mandiri lebih lanjut sumber dari glossary terkait di google ataupun openai bot untuk mencari pemahaman yang lebih solid. Jika anda masih bingung anda juga bisa memilih kata kunci dibawah dan melakukan pencarian mandiri. Selamat belajar !!

[A]

Algorithm : adalah serangkaian langkah yang dilakukan oleh komputer atau sistem lain untuk menyelesaikan suatu masalah atau mencapai tujuan tertentu. Algoritma biasanya ditulis dengan bahasa pemrograman komputer atau menggunakan notasi matematika yang standar. Algoritma dapat digunakan untuk melakukan beragam tugas, mulai dari operasi matematika sederhana hingga tugas-tugas yang lebih kompleks, seperti menganalisis data atau memprediksi hasil dari suatu peristiwa. Algoritma merupakan dasar dari kebanyakan aplikasi komputer dan sistem otomatis lainnya, dan seringkali merupakan bagian dari proses pembuatan software.

Algorism : adalah istilah yang digunakan untuk menggambarkan teknik atau metode yang digunakan untuk menyelesaikan suatu masalah matematika menggunakan algoritma. Algorism merupakan salah satu cara yang digunakan dalam matematika untuk menyelesaikan masalah-masalah yang membutuhkan langkah-langkah yang terstruktur dan dapat diulang. Istilah algorism biasanya digunakan untuk menunjuk pada teknik-teknik yang digunakan sebelum abad ke-17, saat algoritma modern mulai dikembangkan. Algorism merupakan salah satu cabang dari matematika yang berkaitan dengan pemecahan masalah menggunakan algoritma, dan biasanya merujuk pada teknik-teknik yang digunakan untuk menyelesaikan masalah aritmatika, seperti penjumlahan, pengurangan, perkalian, dan pembagian.

Abacist : adalah istilah yang digunakan untuk menggambarkan orang yang menggunakan metode abakus atau alat hitung abakus untuk menyelesaikan masalah matematika. Abakus adalah sebuah alat hitung yang terdiri dari sekumpulan biji atau batang yang diletakkan di atas sebuah jaringan logam atau kayu, yang digunakan untuk menghitung, menambah, dan mengurangi. Abakus pertama kali ditemukan di Timur Tengah pada abad ke-4, dan kemudian menyebar ke seluruh dunia. Abakus masih digunakan hingga sekarang, terutama di beberapa negara di Asia, meskipun alat hitung modern seperti kalkulator telah menggantikannya di banyak tempat. Abacist biasanya merupakan orang yang terlatih dalam menggunakan abakus untuk menyelesaikan masalah matematika, terutama dalam operasi aritmatika dasar seperti penjumlahan, pengurangan, perkalian, dan pembagian.

Abacus ( Sempoa ) : adalah sebuah alat perhitungan yang terdiri dari sekumpulan batang-batang kecil yang digunakan untuk membantu dalam proses perhitungan matematika. Sempoa biasanya terdiri dari batang-batang kecil dengan ukuran yang sama, yang masing-masing mewakili satuan, puluhan, ratusan, dan seterusnya.

Al-Khawarizmi : adalah seorang matematikawan, ahli astronomi, dan ilmuwan Muslim yang hidup pada abad ke-9. Ia merupakan salah satu tokoh penting dalam sejarah matematika, terutama karena perannya dalam mengembangkan teknik-teknik algoritma dan menuliskan buku-buku tentang matematika dan astronomi yang menjadi sumber rujukan penting bagi para ilmuwan di masa mendatang. Al-Khawarizmi juga merupakan salah satu dari orang-orang yang pertama kali menggunakan sistem angka Hindu-Arab, yang merupakan dasar dari sistem angka yang digunakan sekarang ini. Ia juga merupakan salah satu dari orang-orang yang pertama kali menggunakan konsep aljabar, yang merupakan cabang dari matematika yang menangani permasalahan-permasalahan yang menggunakan simbol-simbol untuk menggambarkan konsep-konsep abstrak. Al-Khawarizmi dianggap sebagai salah satu tokoh terpenting dalam sejarah matematika dan ilmu pengetahuan, dan terutama diakui atas kontribusinya dalam perkembangan algoritma dan sistem angka yang digunakan sekarang ini.

Al-jabr Wa’l Muqabala : adalah sebuah buku yang ditulis oleh Muhammad ibn Musa al-Khawarizmi pada abad ke-9, yang merupakan salah satu sumber rujukan penting dalam sejarah matematika. Buku ini merupakan salah satu dari buku-buku pertama yang membahas konsep aljabar, yaitu cabang dari matematika yang menangani permasalahan-permasalahan yang menggunakan simbol-simbol untuk menggambarkan konsep-konsep abstrak. Al-jabr Wa’l Muqabala merupakan salah satu dari buku-buku pertama yang membahas metode-metode untuk menyelesaikan persamaan-persamaan yang memiliki simbol-simbol abstrak sebagai anggotanya. Buku ini juga merupakan salah satu sumber rujukan penting dalam sejarah matematika karena menjadi salah satu dari buku-buku pertama yang menggunakan sistem angka Hindu-Arab, yang merupakan dasar dari sistem angka yang digunakan sekarang ini. Al-jabr Wa’l Muqabala merupakan salah satu dari buku-buku matematika yang paling terkenal dan penting dalam sejarah, dan masih dianggap sebagai salah satu sumber rujukan penting bagi para ilmuwan dan matematikawan.

Aljabar : adalah cabang dari matematika yang menangani permasalahan-permasalahan yang menggunakan simbol-simbol untuk menggambarkan konsep-konsep abstrak, seperti variabel, konstanta, dan operasi matematika. Aljabar merupakan salah satu dari cabang-cabang matematika yang paling dasar dan penting, dan seringkali merupakan dasar dari berbagai cabang ilmu lainnya yang membutuhkan analisis matematika. Aljabar pertama kali dikembangkan oleh matematikawan Muslim Muhammad ibn Musa al-Khawarizmi pada abad ke-9, dan kemudian menjadi salah satu dari cabang matematika yang paling penting dan terkenal di dunia. Aljabar digunakan dalam berbagai bidang, mulai dari matematika dasar hingga ilmu-ilmu terapan seperti fisika, kimia, dan ilmu komputer. Aljabar juga merupakan dasar dari konsep-konsep matematika yang lebih tinggi, seperti analisis, geometri, dan topologi.

Assignment : adalah sebuah perintah yang digunakan untuk menetapkan nilai baru kepada variabel atau konstanta. Assignment biasanya terdiri dari nama variabel atau konstanta yang akan diberi nilai baru, diikuti oleh tanda sama dengan (=) dan diakhiri dengan nilai yang akan ditetapkan.

Algoritmic Analysis : adalah suatu proses yang digunakan untuk mengevaluasi dan mengukur efisiensi suatu algoritma. Analisis algoritmik biasanya dilakukan dengan mengukur waktu yang diperlukan oleh algoritma untuk menyelesaikan suatu masalah atau mencari solusi dari suatu permasalahan. Analisis algoritmik juga dapat digunakan untuk mengukur jumlah ruang yang diperlukan oleh algoritma untuk menyimpan informasi atau data yang dibutuhkan untuk menyelesaikan masalah tersebut. Dengan melakukan analisis algoritma, kita dapat mengetahui seberapa efisien suatu algoritma dalam menyelesaikan suatu masalah dan dapat membandingkan efisiensi antara berbagai algoritma yang ada.

Average : adalah suatu ukuran statistik yang menggambarkan nilai tengah dari suatu himpunan data. Dalam algoritma, rata-rata dapat digunakan untuk menghitung nilai tengah dari suatu himpunan data dengan cara menjumlahkan seluruh elemen dari himpunan tersebut dan kemudian membagi jumlah tersebut dengan jumlah elemen dalam himpunan tersebut.

Arbitrator Real Number ( Bilangan Real Arbitrer ) : adalah bilangan yang terdiri dari angka desimal yang tidak terbatas (infinite) dan tidak memiliki pola yang pasti. Bilangan real arbitrer tidak dapat dituliskan dalam bentuk pecahan atau dinyatakan dengan rumus matematika tertentu.

[C]

Computer Programmer : adalah seseorang yang bertugas untuk menulis atau membuat program komputer. Pemrogram komputer bertanggung jawab untuk merancang, menulis, dan menguji program komputer yang akan digunakan untuk menjalankan suatu aplikasi atau sistem.

Computational Method : adalah suatu cara atau prosedur yang digunakan untuk menyelesaikan suatu masalah atau memecahkan suatu permasalahan dengan menggunakan komputer atau perangkat lunak komputer. Metode komputasi biasanya terdiri dari langkah-langkah yang harus dilakukan secara berurutan untuk mencapai tujuan yang diinginkan.

Computation Order : adalah suatu ukuran atau nilai yang menunjukkan seberapa cepat suatu algoritma dapat menyelesaikan suatu proses atau tugas. Komputasi order biasanya dinyatakan dalam notasi Big O (O), yang menunjukkan seberapa banyak operasi yang dilakukan oleh algoritma tersebut untuk menyelesaikan suatu proses.

Collection of Numbers ( Himpunan Bilangan ) : adalah suatu kumpulan bilangan yang memiliki sifat atau karakteristik yang sama. Himpunan bilangan dalam algoritma biasanya digunakan untuk menyatakan atau mengelompokkan bilangan sesuai dengan sifat atau karakteristik yang dimilikinya.

[D]

Decrease Operation : adalah suatu tindakan atau proses yang dilakukan untuk mengurangi suatu nilai atau jumlah. Operasi Decrease biasanya digunakan dalam algoritma atau program komputer untuk mengurangi nilai suatu variabel atau objek dengan jumlah tertentu.

Definiteness : adalah suatu kondisi dimana suatu proses atau langkah dalam algoritma memiliki batas atau jumlah yang pasti dan tidak ambigu. Definiteness dalam algoritma biasanya digunakan untuk menunjukkan bahwa proses atau langkah tersebut harus dilakukan sebanyak jumlah yang pasti atau sampai tercapai kondisi yang pasti.

Division Algorithm : adalah suatu metode atau prosedur yang digunakan untuk menghitung hasil bagi dari suatu pembagian bilangan. Algoritma pembagian biasanya terdiri dari beberapa langkah yang harus dilakukan secara berurutan untuk menghitung hasil bagi suatu pembagian bilangan.

Dynamic : adalah suatu kondisi dimana suatu proses atau langkah dalam algoritma dapat berubah atau diubah sesuai dengan kebutuhan atau kondisi yang terjadi. Dinamis dalam algoritma biasanya digunakan untuk menunjukkan bahwa proses atau langkah tersebut dapat disesuaikan atau diubah sesuai dengan kebutuhan atau kondisi yang terjadi.

Doubly Subscripted Notation : adalah suatu cara menuliskan suatu array atau matriks dengan menggunakan dua indeks atau subscript. Notasi indeks ganda biasanya digunakan untuk menunjukkan elemen atau nilai pada suatu posisi tertentu dalam array atau matriks.

[E]

Euclid’s Algorithms : adalah sebuah algoritma yang digunakan untuk mencari faktor terbesar yang dapat dibagi dengan bilangan yang diberikan (FPB). Algoritma ini dikembangkan oleh matematikawan Yunani kuno Euclid pada abad ke-3 SM, dan masih digunakan hingga sekarang sebagai salah satu metode yang efektif untuk mencari FPB. Algoritma Euclid bekerja dengan menggunakan pembagian sisa dan pengulangan proses sampai FPB ditemukan.

Effectiveness : adalah suatu ukuran atau tingkat kemampuan suatu algoritma dalam menyelesaikan suatu masalah atau memecahkan suatu permasalahan dengan cepat dan tepat. Keefektifan dalam algoritma biasanya diukur dengan menggunakan beberapa metrik, seperti waktu eksekusi (execution time), jumlah langkah yang dilakukan (number of steps), atau jumlah ruang penyimpanan yang dibutuhkan (storage space).

Equality Relation : adalah suatu relasi atau hubungan antara dua objek atau entitas yang sama atau memiliki nilai yang sama. Relasi samasekal biasanya digunakan dalam algoritma untuk menunjukkan bahwa dua objek atau entitas tersebut memiliki nilai yang sama atau sifat yang sama, sehingga dapat digunakan untuk membandingkan atau mengontrol proses yang sedang berlangsung.

Element : adalah suatu objek atau entitas yang terdapat dalam suatu struktur data atau kumpulan data. Element biasanya merupakan unit terkecil dalam suatu struktur data atau kumpulan data yang dapat diakses atau diubah sesuai dengan kebutuhan.

[F]

Phrase : adalah suatu kumpulan kata atau kalimat yang digunakan untuk menyatakan suatu perintah atau instruksi yang harus dilakukan oleh algoritma. Frase dalam algoritma biasanya terdiri dari suatu verb (kata kerja) yang menunjukkan tindakan yang harus dilakukan, dan suatu noun (kata benda) yang menunjukkan objek atau entitas yang terlibat dalam tindakan tersebut.

Formula : adalah suatu cara untuk menyajikan atau menuliskan suatu proses atau tindakan yang harus dilakukan untuk menyelesaikan suatu masalah. Rumus biasanya terdiri dari operator matematika atau simbol-simbol yang mewakili tindakan atau perhitungan yang harus dilakukan.

Flow Chart : adalah suatu representasi visual dari algoritma yang menunjukkan urutan proses atau langkah yang harus dilakukan dalam suatu program komputer. Flow chart biasanya terdiri dari beberapa simbol atau tanda yang mewakili suatu proses atau langkah yang harus dilakukan, serta garis yang menghubungkan simbol-simbol tersebut untuk menunjukkan urutan proses atau langkah yang harus dilakukan.

Finiteness : adalah suatu kondisi dimana suatu proses atau langkah dalam algoritma dapat terhenti atau berakhir pada suatu waktu tertentu. Finiteness dalam algoritma biasanya diwujudkan dalam bentuk loop yang memiliki batas atau jumlah iterasi yang dapat ditentukan, atau kondisi yang dapat terpenuhi atau tidak terpenuhi pada suatu waktu tertentu.

Finiteness Restriction : adalah suatu kondisi dimana suatu proses atau langkah dalam algoritma hanya dapat dilakukan sebanyak jumlah tertentu atau sesuai dengan batas yang telah ditentukan. Finiteness restriction biasanya digunakan untuk mengontrol proses atau langkah yang sedang dilakukan dalam algoritma agar tidak terjadi loop yang tidak terbatas atau proses yang terus berlangsung tanpa ada akhirnya.

[G]

Geometric Construction : adalah proses menggambar atau membangun objek geometri menggunakan rumus matematika dan teknik yang telah ditetapkan. Konstruksi geometris dapat digunakan untuk membuat bentuk-bentuk geometri sederhana atau kompleks, seperti lingkaran, segitiga, persegi, dan lainnya. Algoritma adalah suatu serangkaian langkah yang harus dilakukan untuk menyelesaikan suatu masalah, dan dalam konstruksi geometris, algoritma digunakan untuk memastikan bahwa objek yang dibuat sesuai dengan spesifikasi yang ditentukan.

Greatest Guild : adalah suatu proses untuk mencari bilangan yang merupakan faktor terbesar dari dua bilangan yang diberikan. Persekutuan terbesar biasa disingkat dengan istilah “FPB” atau “GCD” (Greatest Common Divisor).

[I]

Integers ( Bilangan Bulat ) : adalah bilangan yang tidak memiliki bagian desimal, seperti 1, 2, 3, dan seterusnya.

Input : adalah suatu data atau informasi yang diberikan kepada suatu program komputer atau algoritma untuk diproses atau diolah sesuai dengan kebutuhan. Input dalam algoritma biasanya diberikan melalui suatu perangkat masukan, seperti keyboard, mouse, atau scanner, atau dapat juga diberikan secara otomatis melalui suatu file atau database.

Increase Operation : adalah suatu proses atau langkah yang digunakan untuk meningkatkan nilai suatu variabel atau objek. Increase operation biasanya dilakukan dengan menambahkan nilai tertentu ke nilai yang ada, atau dengan mengurangi nilai tertentu dari nilai yang ada.

Imperatif : adalah suatu paradigma pemrograman yang menekankan pada perintah atau instruksi yang harus dilakukan oleh program komputer atau algoritma. Paradigma imperatif biasanya menggunakan bahasa pemrograman yang memiliki struktur atau sintaks yang menekankan pada perintah atau instruksi yang harus dilakukan, seperti perintah if, for, atau while.

Item Subscripted / Indexed : adalah suatu notasi yang digunakan untuk mengakses elemen suatu array atau himpunan data yang terurut. Item subscripted biasanya ditulis dengan menambahkan akhiran indeks setelah nama array atau himpunan data, yang menunjukkan elemen ke-berapa yang akan diakses.

[K]

Kuadrat : adalah suatu operasi matematika yang digunakan untuk menghitung hasil kali suatu bilangan dengan dirinya sendiri. Kuadrat biasanya ditulis dengan menambahkan akhiran pangkat 2 setelah bilangan yang akan dihitung kuadratnya, atau dengan menuliskan bilangan tersebut dalam kurung dengan akhiran pangkat 2 di luar kurung.

[L]

Logaritma Natural : adalah sebuah fungsi matematika yang digunakan untuk mencari nilai logaritma dari suatu bilangan. Logaritma natural atau logaritma dengan basis e merupakan logaritma dari suatu bilangan yang memiliki basis e, dimana e adalah bilangan irrational yang memiliki nilai aproksimatif 2,71828. Logaritma natural sering digunakan dalam berbagai bidang, termasuk dalam algoritma, karena memiliki beberapa keunggulan dibandingkan dengan logaritma dengan basis yang lain. Salah satu keunggulan tersebut adalah nilai logaritma natural dari suatu bilangan selalu positif, sehingga lebih mudah untuk ditangani dalam perhitungan matematika. Selain itu, logaritma natural juga memiliki sifat-sifat algebra yang lebih mudah dihitung dibandingkan dengan logaritma dengan basis yang lain.

Linear : istilah “linear” biasanya digunakan untuk menggambarkan suatu proses atau metode yang berjalan secara terus menerus atau terurut. Dalam matematika, istilah “linear” juga digunakan untuk menggambarkan suatu persamaan atau fungsi yang memiliki bentuk yang sederhana dan hanya terdiri dari variabel dan koefisien yang terikat secara linear.

[N]

Negative Integer ( Bilangan Bulat Negatif ) : adalah bilangan bulat yang bernilai lebih kecil dari nol (0). Bilangan bulat negatif termasuk dalam kelompok bilangan bulat yang tidak memiliki bagian desimal, seperti -1, -2, -3, dan seterusnya.

Number ( Bilangan ) : adalah suatu konsep yang digunakan untuk mengidentifikasi dan mengelompokkan suatu objek berdasarkan jumlah atau kuantitasnya. Dalam matematika, bilangan adalah suatu simbol atau tanda yang digunakan untuk menyatakan jumlah atau kuantitas suatu objek atau fenomena.

Notation : Notasi dalam algoritma adalah suatu cara untuk menuliskan atau menyajikan suatu algoritma dengan menggunakan simbol atau tanda khusus yang telah ditetapkan. Notasi ini biasanya digunakan untuk menyajikan algoritma dengan lebih jelas dan mudah dipahami, sehingga lebih mudah untuk dibaca dan diterapkan. Ada banyak notasi yang digunakan dalam algoritma, diantaranya adalah notasi flowchart, pseudocode, dan lainnya.

Nonterminating Computational Method : adalah suatu algoritma atau proses yang tidak dapat menyelesaikan masalah atau mencapai keadaan akhir yang ditetapkan. Nonterminating computational method biasanya disebabkan oleh kesalahan dalam algoritma atau desain proses yang tidak tepat, sehingga proses tersebut tidak dapat mencapai keadaan akhir yang diinginkan.

[O]

Output : adalah hasil atau keluaran dari suatu proses atau algoritma yang telah dijalankan. Output biasanya merupakan informasi atau data yang dihasilkan oleh proses tersebut setelah melakukan beberapa tindakan atau perhitungan.

Ordered Array : adalah suatu tipe data yang digunakan untuk menyimpan dan mengelola sekumpulan data yang telah diurutkan sesuai dengan nilainya. Array yang terurut biasanya digunakan untuk mempermudah pencarian atau pengolahan data, karena data-data yang tersimpan dalam array tersebut telah diurutkan secara teratur sehingga lebih mudah ditemukan atau diproses.

[P]

Positive Integer ( Bilangan Bulat Positif ) : adalah bilangan bulat yang bernilai lebih besar dari nol (0). Bilangan bulat positif termasuk dalam kelompok bilangan bulat yang tidak memiliki bagian desimal, seperti 1, 2, 3, dan seterusnya.

[Q]

Quantitative Behavior : adalah suatu cara untuk menilai atau mengevaluasi kinerja suatu algoritma dengan mengukur jumlah atau besaran yang terkait dengan algoritma tersebut. Perilaku kuantitatif biasanya digunakan untuk mengevaluasi efisiensi suatu algoritma, yaitu seberapa cepat suatu algoritma dapat menyelesaikan suatu masalah atau menghasilkan output yang diinginkan.

[R]

Reduce : adalah suatu proses untuk mengurangi atau mengubah suatu kumpulan data menjadi satu nilai yang lebih sederhana. Reduce biasanya digunakan untuk mengolah atau menganalisis data yang terdiri dari banyak elemen dengan menggunakan suatu fungsi atau operasi tertentu.

Remainder : adalah suatu bilangan yang dihasilkan dari proses pembagian dua bilangan. Remainder merupakan bilangan yang tidak dapat dibagi secara merata oleh bilangan pembagi, sehingga sisa bagi tersebut disimpan sebagai remainder.

[S]

Subtitution : adalah suatu proses untuk mengganti atau menetapkan nilai baru untuk suatu variabel atau konstanta yang telah didefinisikan sebelumnya. Subtitution biasanya dilakukan dengan menggunakan operator penugasan, yaitu simbol “=” yang digunakan untuk menetapkan nilai baru untuk suatu variabel atau konstanta.

[T]

The Proportionality Constant : adalah suatu nilai yang digunakan untuk menentukan seberapa besar pengaruh suatu variabel terhadap suatu proses atau perubahan yang terjadi. Konstanta proporsionalitas biasanya digunakan dalam rumus-rumus matematika atau algoritma untuk menentukan bagaimana suatu variabel akan mempengaruhi hasil akhir atau perubahan yang terjadi.

The Arrow ( ->, <- ) : adalah suatu simbol yang biasanya digunakan untuk menunjukkan arah atau tujuan suatu proses atau tindakan. The arrow biasanya digunakan dalam algoritma pemrograman untuk menunjukkan urutan tindakan yang harus dilakukan dalam suatu program atau aplikasi.

The Division ( / ) : adalah suatu proses untuk membagi suatu bilangan dengan bilangan lain. The Divide biasanya dilakukan dengan menggunakan operator pembagian, yang digunakan untuk menentukan bilangan pembagi dan hasil pembagian dari dua bilangan yang diberikan.

The Modulus ( % ) : adalah suatu proses untuk menentukan sisa bagi dari suatu pembagian. The Modulus biasanya dilakukan dengan menggunakan operator modulus “%”, yang digunakan untuk menentukan bilangan pembagi dan sisa bagi dari pembagian yang dilakukan.

The Multiplication ( * ) : adalah suatu proses untuk mengalikan suatu bilangan dengan bilangan lain. The Multiple biasanya dilakukan dengan menggunakan operator perkalian, yang digunakan untuk menentukan bilangan yang akan dikalikan dan hasil perkalian dari dua bilangan yang diberikan.

The Addition ( + ) : adalah suatu proses untuk menjumlahkan dua bilangan atau lebih. The Addition biasanya dilakukan dengan menggunakan operator penjumlahan, yang digunakan untuk menentukan bilangan yang akan dijumlahkan dan hasil penjumlahan dari dua bilangan atau lebih yang diberikan.

The Subtraction ( - ) : adalah suatu proses untuk mengurangi dua bilangan atau lebih. The subtraction biasanya dilakukan dengan menggunakan operator pengurangan, yang digunakan untuk menentukan bilangan yang akan dikurangi dan hasil pengurangan dari dua bilangan atau lebih yang diberikan.

[U]

Universal Agreement : adalah suatu kesepakatan yang dibuat oleh para ahli dalam suatu bidang untuk menggunakan algoritma atau teknik yang sama dalam menyelesaikan masalah dalam bidang tersebut. Kesepakatan ini biasanya dibuat untuk memudahkan komunikasi dan pertukaran informasi antara para ahli, serta untuk menjamin bahwa hasil yang diperoleh sesuai dengan standar yang telah ditetapkan. Algoritma yang disepakati secara universal biasanya merupakan algoritma yang sudah teruji dan terbukti efektif dalam menyelesaikan masalah dalam bidang tersebut. Contohnya, dalam bidang kriptografi, kesepakatan universal yang sering digunakan adalah algoritma enkripsi RSA (Rivest-Shamir-Adleman).

[V]

Variable : merupakan suatu wadah untuk menampung suatu nilai. Nilai pada variabel dapat diubah dengan operasi tertentu.

--

--

Hans Beaver

I like writing and reading a book, always coding in my spare time and learn something new.