Pengertian umum dari suatu algoritma adalah urutan dari sejumlah langkah
logis dan sistematis untuk memecahkan suatu masalah tertentu.
Artinya semua susunan logis yang disusun dalam urutan sistem pembelajaran
tertentu dan digunakan untuk memecahkan suatu masalah tertentu, dapat kita
katakan seperti sebuah algoritma.
Selain itu, Algoritma juga berisi serangkaian instruksi terbatas serta instruksi
khusus untuk menghitung fungsi yang, ketika dieksekusi dan diproses,
menghasilkan output tertentu dan kemudian berhenti pada kondisi terminasi
yang ditentukan.
Algoritma adalah suatu langkah atau metode yang telah direncanakan secara
matang sehingga terurut dan terorganisir dengan baik dan biasanya digunakan
untuk memecahkan suatu masalah dengan memberikan suatu instruksi
sehingga menjadi suatu tindakan.
Sedangkan dalam Kamus Besar Bahasa Indonesia (KBBI), algoritma adalah
suatu prosedur sistematis untuk menyelesaikan masalah matematika dalam
langkah-langkah terbatas atau urutan pengambilan keputusan yang logis untuk
memecahkan masalah tersebut.
Dari pengertian tersebut dapat dikatakan bahwa algoritma ini digunakan untuk
menyelesaikan atau menyelesaikan suatu masalah dengan langkah-langkah
logis yang terurut.
Sejarah Algoritma
Saat itu, Al-Khawarizmi menulis sebuah buku dengan judul Al Jabar wal-
Muqabala yang artinya Buku Pemulihan dan Pengurangan (The Book of
Restoration and Reduction) . Dari judul buku kita juga mendapatkan kata
“aljabar” atau lebih dikenal dengan istilah algebra.
Abu Abdullah Ibn Musa al-Khawarizmi (770- 840M) lahir di Khawarizm (Kheva),
sebuah kota di selatan Sungai Oxus (sekarang disebut Uzbekistan) pada 770 M.
Al Khawarizmi adalah salah satu ilmuwan terkenal pada masanya. Ada
beberapa cabang matematika yang ditemukannya antara lain yang disebut
astronom dan ahli geografi.
Awalnya, algoritma adalah istilah yang mengacu pada aturan aritmatika yang
berguna untuk memecahkan masalah menggunakan angka Arab.
Pada tahun 1950, kata algoritma pertama kali digunakan dalam “Algoritma
Euclidean”. Euclid, seorang matematikawan Yunani (lahir pada 350 M). Dalam
bukunya Elements menulis langkah-langkah untuk menemukan pembagi
persekutuan terbesar (common greatest divisor atau gcd), dari dua bilangan
bulat, m dan n [KNU 73] (tentu saja Euclid tidak menyebut metodenya sebagai
algoritma, itu hanya di zaman modern orang menyebut
metodenya (“algoritma Euclidean”).
Jenis-Jenis Algoritma
Seorang matematikawan dan ilmuwan komputer bernama Dr. Christoph
Koutschan mengatakan bahwa setidaknya ada 32 algoritma dalam ilmu
komputer. Namun jika dilihat dari fungsinya, hanya ada enam algoritma dasar,
yaitu:
1. Rekursi
Sebuah algoritma rekursi adalah sesuatu yang akan memanggil dirinya sendiri
berulang-ulang sehingga masalah dapat diselesaikan dengan benar. Berikut
adalah beberapa kode yang dapat menemukan faktorial menggunakan
algoritma rekursi.
Fact(y)
If y is 0
return 1
MergeSorting(ar[], l, r)
If r > l
1. Find the mid-point to divide the given array into two halves:
middle m = (l+r)/2
3. Dynamic Programming
Dynamic Programming akan bekerja dengan mengingat hasil dari proses masa
lalu dan juga menggunakannya untuk menemukan hasil baru.
= 0 (for n=1)
= Fibonacci(N-1)+ Finacchi(N-2)
4. Greedy
Tipe ini dapat digunakan untuk menyelesaikan masalah optimasi. Dalam
algoritma ini, kita akan menemukan solusi yang lebih optimal secara lokal
tanpa mengkhawatirkan konsekuensi yang akan terjadi di masa depan dan kita
dapat menemukan solusi yang lebih optimal secara global.
Namun, cara ini tidak menjamin Anda bisa mendapatkan solusi yang optimal.
Ada lima komponen yang terdapat dalam algoritma ini, yaitu:
A[n] ← X
i←0
While A [i] ≠ X do
i←i+1
if i < n return i
else return -1
6. Algoritma Backtracking
Backtracking adalah teknik yang dapat memecahkan masalah yang berbeda
secara rekursi dan mencoba mereka untuk menemukan solusi dengan
memecahkan satu bagian dari masalah pada waktu yang sama. Jika solusi
gagal, kita dapat menghapusnya dan kembali mencari solusi lain.
Artinya algoritma ini akan menyelesaikan sub masalah dan jika gagal maka
algoritma akan membatalkan langkah terakhir dan memulai kembali untuk
mencari solusi dari masalah tersebut.
Fungsi Algoritma
Setelah mengetahui definisi dan karakteristik algoritma, Anda harus
mengetahui fungsi dari algoritma tersebut. Benarkah algoritma hanya
dibutuhkan dalam pemrograman?
Selain itu, beberapa fungsi lain dari algoritma adalah sebagai berikut:
5 Karakteristik Algoritma
Menurut Donald E. Knuth, algoritma harus memiliki lima karakteristik penting
yang saling berhubungan. Kriteria untuk algoritma ini meliputi:
1. Finiteness (Keterbatasan)
Algoritma harus berhenti setelah mengambil sejumlah langkah yang terbatas,
yaitu ada tujuan akhir yang tercapai, sehingga program akan berhenti ketika
tujuan akhir telah tercapai. Program yang tidak pernah berhenti menunjukkan
bahwa program tersebut mengandung algoritma yang salah.
2. Definiteness (Kepastian)
Setiap langkah harus didefinisikan dengan tepat dan tidak ambigu. Ada
instruksi yang jelas dan tidak ambigu, sehingga tidak ada kesalahan dalam
menghasilkan output.
3. Input (Masukan)
Input ini adalah masalah yang diketahui dan solusi akan diselidiki. Algoritma ini
tidak memiliki atau lebih input, yang merupakan jumlah yang disediakan untuk
algoritma untuk diproses.
4. Output (Keluar)
Algoritma tidak memiliki atau lebih nilai output. Output ini tentunya harus
menjadi solusi atau solusi dari suatu masalah. Output dapat berupa pesan atau
kuantitas yang terkait dengan input.
5. Effectiveness (keefektivitasan)
Algoritma harus efisien, setiap urutan atau langkah harus sesederhana
mungkin, sehingga dapat diimplementasikan dalam waktu yang wajar.
Contoh Algoritma
Untuk lebih memahami algoritma, perlu diketahui bahwa algoritma tidak
hanya berlaku dalam pemrograman tetapi dapat diterapkan dalam kehidupan
sehari-hari.
Contoh Soal:
Data yang diberikan berupa nama pegawai dan hasil evaluasi kinerja. Jika hasil
evaluasi kinerja lebih besar atau sama dengan 75, maka pegawai tersebut
dinyatakan telah mencapai KPI. Sedangkan jika nilainya kurang dari 75,
pegawai tersebut dinyatakan gagal mencapai KPI.
Contoh penulisan algoritmanya adalah seperti berikut ini:
Contoh 1
keterangan = berhasil
Contoh 2
Nama = string
Nilai = integer
Keterangan = string
else
write(nama, keterangan)
Contoh 3
Sementara itu, contoh lain dari algoritma juga dapat dilihat pada teknologi
khususnya pada mesin pencari yang penggunaannya membutuhkan internet.
Untuk lebih memahami contoh algoritma dalam teknologi, Anda dapat melihat
contoh di bawah ini.
Oleh karena itu, jika Anda ingin membuat artikel yang muncul di halaman
pertama atau urutan pertama mesin pencari, Anda harus menentukan
algoritma mesin pencari terlebih dahulu.
Di atas adalah 3 contoh algoritma yang ada dalam kehidupan sehari-hari dan
algoritma yang berhubungan dengan teknologi mesin pencari. Pada dasarnya,
masih banyak contoh algoritma, mungkin Anda bisa memberikan contoh
algoritma. Setelah mengenal definisi dan contoh algoritma, sepertinya Anda
sudah mulai memahami algoritma atau bahkan ingin menerapkannya dalam
kehidupan sehari-hari.
Konsep Algoritma
Berikut adalah beberapa konsep yang penting dalam algoritma:
Sifat Algoritma
Berikut adalah beberapa sifat yang harus dimiliki oleh sebuah algoritma:
Contoh Algoritma
Contoh algoritma dapat ditemukan dalam berbagai bidang, seperti pengolahan
data, pembelajaran mesin, dan bahkan dalam aktivitas sehari-hari. Berikut
adalah beberapa contoh algoritma yang umum:
Ini hanya beberapa contoh algoritma, ada banyak lagi algoritma yang
digunakan dalam berbagai bidang. Penting untuk memahami sifat-sifat dan
prinsip-prinsip dasar algoritma untuk dapat menentukan algoritma yang tepat
untuk masalah yang spesifik.
Algoritma merupakan bagian penting dari dunia teknologi dan informatika dan
memainkan peran yang sangat besar dalam membantu untuk menyelesaikan
beragam masalah kompleks.
Definisi informal
Untuk penjelasan lebih rinci dari berbagai sudut pandang mengenai definisi "algoritme",
lihat Karakterisasi Algoritme.
Definisi informalnya bisa berarti "sekumpulan aturan yang secara tepat menentukan
seurutan operasi". [24] yang mengikutkan semua program komputer, termasuk program yang
tidak melakukan perhitungan numerik. Secara umum, sebuah program hanyalah sebuah
algoritme jika ia akan berhenti nantinya. [25]
Sebuah contoh prototipikal dari suatu algoritme adalah algoritme Euclid untuk menentukan
bilangan pembagi terbesar dari dua integer; sebagai contohnya (ada contoh yang lain)
dijelaskan dengan diagram alur di atas dan sebagai contoh di bagian lanjut.
(Boolos & Jeffrey 1974, 1999) memberikan sebuah makna informal dari kata algoritme
dalam persamaan berikut:
Tidak ada manusia yang dapat menulis begitu cepat, atau begitu lama, atau begitu kecil
("kecil, dan lebih kecil tanpa batas ... anda mungkin mencoba menulis di atas molekul, atom,
elektron") untuk mencatat semua anggota dari kumpulan bilangan tak terbatas dengan
menuliskan namanya, bergantian, dalam suatu notasi. Tapi manusia bisa melakukan sesuatu
yang sama bergunanya, pada kasus kumpulan bilangan tak terbatas: Mereka dapat
memberikan instruksi jelas untuk menentukan anggota ke-n dari set, untuk n terbatas acak.
Instruksi tersebut diberikan secara eksplisit, dalam bentuk yang dapat diikuti oleh mesin
penghitung, atau oleh manusia yang mampu melakukan hanya operasi-operasi dasar
dengan simbol-simbol. [26]
Suatu "bilangan tak-terbatas" adalah bilangan yang elemen-elemenya bisa
berkorespondensi satu-ke-satu dengan integer. Maka, Boolos dan Jeffrey mengatakan
bahwa sebuah algoritme berarti instruksi bagi sebuah proses yang "membuat" keluaran
integer dari sebuah "masukan" acak integer yang, secara teori, bisa sangat besar. Maka
sebuah algoritme dapat berupa persamaan aljabar seperti y = m + n -- dua variabel
masukan m dan n yang menghasikan keluaran y. Tapi berbagai penulis yang mencoba
mendefinisikan persamaan tersebut mengatakan bahwa kata algoritme mengandung lebih
dari itu, sesuatu yang kurang lebih (untuk contoh penjumlahan):
Instruksi rinci dan tepat (dalam bahasa yang dipahami oleh "komputer") [27] untuk
proses yang cepat, efisien, "baik"[28] yang menentukan "pergerakan" dari "komputer"
(mesin atau manusia, dibekali dengan informasi dan kemampuan internal yang
dibutuhkan)[29] untuk menemukan, dekode, dan kemudian mengolah masukan
integer/simbol m dan n, simbol + dan = ... dan "secara efektif"[30] menghasilkan,
dalam waktu yang "masuk akal",[31] keluaran integer y pada tempat dan format
tertentu.
Konsep dari algoritme juga digunakan untuk mendefinisikan notasi dari desidabilitas.
Notasi tersebut adalah pusat untuk menjelaskan bagaimana sistem formal berasal dari
sejumlah kecil aksioma dan aturan. Dalam logika, waktu dari sebuah algoritme untuk
selesai tidak dapat dihitung, karena tidak berelasi dengan dimensi fisik kita. Dari
ketidakpastian tersebut, yang mengkarakteristikan pekerjaan yang sedang berjalan,
timbulah ketidak-tersediannya definisi algoritme yang sesuai dengan konkret (pada
tingkat tertentu) dan penggunaan secara abstrak dari istilah tersebut.
FormalisasI
Algoritme sangat penting bagi cara komputer mengolah data. Banyak program
komputer mengandung algoritme memberikan rincian pada instruksi khusus yang
komputer harus lakukan (dengan urutan tertentu) untuk menjalankan pekerjaan
tertentu, seperti menghitung gaji karyawan atau mencetak kartu rapor siswa. Maka,
sebuah algoritme bisa dianggap sebagai urutan operasi yang bisa disimulasikan oleh
sebuah sistem Turing-lengkap. Penulis yang mendukung tesis ini termasuk Minsky
(1967), Savage (1987), dan Gurevich (2000):
Minsky: "Tapi kita juga menjaga, dengan Turing ... bahwa setiap prosedur yang "secara
alami" disebut efektif, bisa dinyatakan oleh mesin (sederhana). Walaupun tampaknya
ekstrem, alasan tersebut ... sukar disanggah". [32]
Gurevich: "... argumen informal Turing untuk menyokong tesis ini membenarkan tesis
yang lebih kuat: setiap algoritme bisa disimulasikan oleh sebuah mesin Turing ...
menurut Savage [1987], sebuah algoritme adalah sebuah proses penghitungan yang
ditentukan oleh sebuah mesin Turing". [33]
Biasanya, bila sebuah algoritme dihubungkan dengan pengolahan informasi, data dibaca
dari sumber masukan, ditulis ke perangkat keluaran, dan/atau disimpan untuk
pengolahan selanjutnya. Data simpanan dianggap sebagai bagian dari keadaan internal
dari entitas yang melakukan algoritme. Pada praktiknya, keadaan tersebut disimpan
pada satu atau lebih struktur data.
Untuk beberapa proses komputasi, algoritme harus ditentukan secara teliti: dijabarkan
dengan cara ia bakal berlaku untuk semua kemungkinan yang dapat timbul. Yaitu, setiap
langkah tambahan harus secara sistematis dihadapi, kasus-per-kasus; Kriteria bagi setiap
kasus harus jelas (dan bisa dihitung).
Karena sebuah algoritme adalah kumpulan dari langkah-langkah yang tepat, urutan dari
komputasi selalu penting bagi berfungsinya algoritme. Instruksi biasanya diasumsikan
terdaftar secara eksplisit, dan dijelaskan dimulai "dari atas" dan terus "ke bawah",
sebuah gambaran yang dijelaskan secara formal oleh alur kontrol
Sejauh ini, diskusi tentang formalisasi algoritme telah mengasumsikan premis
dari pemrograman imperatif. Hal ini merupakan konsepsi umum, yang mencoba
menjelaskan sebuah pekerjaan dalam makna diskrit dan "mekanis". Keunikan dari
konsepsi formalisasi algoritme adalah operasi penetapan, mengatur nilai dari sebuah
variabel. Ia berasal dari intuisi "ingatan" sebagai kertas buram. Contoh operasi
penetapan tersebut ada di bawah.
Untuk konsepsi yang lain dari apa yang membentuk sebuah algoritme
lihat pemrograman fungsional dan pemrograman logika.
Menggambarkan algoritme
Algoritme dapat digambarkan dengan banyak notasi, termasuk bahasa
alamiah, pseudokode, diagram alur, bagan drakon, bahasa pemrograman atau tabel
kontrol (diproses oleh penerjemah). Ekspresi bahasa alamiah terhadap algoritme
condong lebih banyak dan rancu, dan jarang digunakan untuk algoritme yang kompleks
dan teknis. Pseudokode, diagram alur, bagan drakon, dan tabel kontrol adalah cara yang
terstruktur untuk menggambarkan algoritme yang mencegah banyaknya kerancuan
pada pernyataan-pernyataan bahasa alamiah. Bahasa pemrograman ditujukan untuk
mengekspresikan algoritme dalam sebuah bentuk yang dapat dieksekusi oleh komputer,
tetapi sering kali digunakan sebagai suatu cara untuk menentukan atau
mendokumentasikan algoritme.
Ada banyak macam kemungkinan representasi dan seseorang dapat mengekspresikan
sebuah program mesin Turing sebagai urutan dari tabel-tabel mesin (lihat lebih lanjut
di mesin kondisi-terbatas, tabel transisi kondisi dan tabel kontrol), sebagai diagram alur
dan bagan drakon (lihat lebih lanjut di diagram kondisi), atau sebagai bentuk kode
mesin atau kode assembly dasar yang dikenal "kumpulan lipat empat" (lihat lebih lanjut
di mesin Turing).
Representasi dari algoritme dapat dikelompokan ke dalam tiga tingkatan dari deskripsi
mesin Turing: [34]
1 Deskripsi tingkat-tinggi
"... ditujukan untuk menjelaskan algoritme, menghiraukan rincian implementasi.
Pada tingkat ini kita tidak perlu menyebutkan bagaimana mesin mengatur perangkat
pita atau kepala pita rekam."
2 Deskripsi implementasi
"... digunakan untuk menjelaskan cara mesin Turing menggunakan kepalanya dan
cara menyimpan data. Pada tingkat ini kita tidak memberikan secara rinci kondisi
atau fungsi transisi."
3 Deskripsi formal
Lebih rinci, "tingkat paling rendah", menjelaskan "tabel kondisi" dari mesin Turing.
Sebagai contoh dari algoritme sederhana "Penjumlahan m+n" dijelaskan
dalam tiga tingkatan tersebut lihat contoh algoritme.
Implementasi
Kebanyakan algoritme ditujukan untuk diimplementasikan sebagai program komputer.
Namun, algoritme juga diimplementasikan dengan tujuan lain, seperti dalam jaringan
saraf biologis (sebagai contohnya, otak manusia yang mengimplementasikan aritmetika atau
sebuah serangga yang melihat makanan), dalam sirkuit elektris, atau dalam sebuah
perangkat mekanis.
Algoritme komputer
Contoh diagram alur dari struktur Bohm-Jacopini: URUTAN (segi empat), WHILE-DO dan IF-
THEN-ELSE. Ketiga struktur dibentuk dari kondisi primitif GOTO ( IF test=true THEN GOTO
step xxx ) (wajik), GOTO tak bersyarat (segi empat), berbagai operator penetapan (segi
empat), dan HALT (bujursangkar). Memasukan struktur tersebut ke dalam blok-penetapan
menghasilkan diagram yang kompleks (cf Tausworthe 1977:100,114).
Dalam sistem komputer, sebuah algoritme pada dasarnya adalah instansi dari logika ditulis
dalam perangkat lunak oleh pengembang perangkat lunak supaya efektif untuk komputer
yang "ditargetkan" untuk mesin tertentu untuk menghasilkan keluaran dari masukan yang
diberikan (kemungkinan nul).
Program yang "elegan" (padat), program yang "baik" (cepat): Pernyataan dari "sederhana
dan elegan" muncul secara informal dalam buku Knuth dan dalam Chaitin:
Knuth: "... kita menginginkan algoritme yang baik dalam definisi estetika sederhana.
Salah satu kriterianya ... adalah waktu yang dibutuhkan untuk berjalannya
algoritme ... Kriteria yang lain adalah adaptasi dari algoritme ke komputer,
kesederhanaan dan elegan, dll"[35]
Chaitin: "... sebuah program adalah 'elegan, maksud saya adalah ia merupakan
program terkecil untuk menghasilkan keluaran."[36]
Chaitin membuka definisinya dengan: "Saya akan perlihatkan bahwa anda tidak
dapat membuktikan sebuah program adalah 'elegan'"—bukti tersebut akan
menyelesaikan permasalahan perhentian (ibid).
Algoritme terhadap fungsi yang dapat dihitung oleh algoritme: Untuk sebuah fungsi
bisa ada beberapa algoritme. Hal ini benar, bahkan tanpa mengembangkan
kumpulan instruksi yang ada bagi programmer. Rogers mengamati bahwa "Sangat ...
penting untuk membedakan antara pengertian algoritme, misalnya prosedur dan
pernyataan fungsi yang dihitung oleh algoritme, misalnya pemetaan hasil dari
prosedur. Fungsi yang sama bisa memiliki beberapa algoritme berbeda". [37]
Sayangnya ada pertukaran antara kebaikan (kecepatan) dan elegan (kepadatan) --
sebuah program yang elegan bisa melakukan lebih banyak langkah untuk
menyelesaikan sebuah komputasi daripada yang kurang elegan. Sebuah contoh yang
menggunakan algoritme Euclid bisa dilihat di bawah.
Komputer (dan komputor), model dari komputasi: Sebuah komputer (atau manusia
"komputor" [38] ) adalah tipe terbatas dari mesin, sebuah "perangkat mekanis
deterministik diskrit" [39] yang secara buta mengikuti instruksinya.[40] Model primitif
dari Melzak dan Lambek [41] mereduksi pemikiran tersebut menjadi empat elemen:
(i) diskrit, lokasi yang bisa dibedakan, (ii) diskrit, penghitung yang tak bisa
dibedakan [42] (iii) sebuah agen, dan (iv) sebuah daftar instruksi yang efektif relatif
terhadap kemampuan dari agen. [43]
Minsky menjelaskan variasi yang lebih sesuai dari model "abacus"-nya Lambek
dalam "Basis Komputabilitas Paling Sederhana". [44] Mesin Minsky memproses secara
berurutan lewat lima (atau enam tergantung bagaimana seseorang menghitungnya)
instruksi kecuali baik sebuah kondisi IF-THEN GOTO atau GOTO tak bersyarat
mengubah alur program keluar dari urutan. Selain HALT, mesin Minsky mengikutkan
tiga operasi penetapan (penggantian, substitusi): [45] ZERO (misalnya, isi dari lokasi
diganti oleh 0: L ← 0), SUCCESSOR (misalnya, L ← L+1), dan DECREMENT (misalnya, L
← L-1). [46] Jarang seorang programer harus menulis "kode" dengan kumpulan
instruksi terbatas. Tapi Minsky memperlihatkan (sebagaimana Melzak dan Lambek)
bahwa mesinnya adalah Turing komplet dengan hanya empat tipe instruksi utama:
GOTO kondisional, GOTO tak bersyarat, penetapan/penggantian/substitusi, dan
HALT. [47]
1. Jika tidak ada angka dalam deret makan tidak ada bilangan terbesar.
2. Asumsikan item pertama dalam deret adalah yang terbesar.
3. Untuk setiap sisa angka dalam deret, jika angka tersebut besar dari angka terbesar
sekarang, anggap angka tersebut menjadi yang terbesar dalam deret.
4. Bila tidak ada lagi angka yang tersisa pada deret untuk diperiksa, anggap angka
terbesar sekarang menjadi angka yang terbesar dalam deret.
Deskripsi (Quasi-)formal: Ditulis dalam kalimat yang lebih dekat dengan bahasa tingkat-
tinggi dari program komputer, berikut ini adalah kode formal dari algoritme
dalam pseudokode atau kode pijin:
Algoritma LargestNumber
Masukan: Deret angka L.
Keluaran: Angka terbesar dalam daftar L.
terbesar ← Lnull
untuk setiap item dalam L, lakukan
jika item > terbesar, maka
terbesar ← item
kembalikan terbesar
"←" adalah singkatan untuk "diubah menjadi". Misalnya, "terbesar ← item" artinya nilai
dari terbesar diubah menjadi nilai dari item.
"kembalikan" mengakhiri algoritma dan mengeluarkan nilai kembalian.
Algoritme Euclid
Contoh diagram dari algoritme Euclid dari T.L. Health 1908 dengan rincian tambahan. Euclid
tidak sampai pada penghitungan ketiga dan tidak memberikan contoh numeris.
Nocomachus memberikan contoh dari 49 dan 21: "Saya mengurangi yang kecil dari yang
besar; 28 adalah yang kiri; kemudian saya kurangi lagi 21 (hal ini memungkinkan); tersisa 7,
tetapi 7 tidak bisa dikurangi dari 7." Heath berkomentar bahwa, "Kalimat terakhir terdengar
aneh, tetapi maknanya sangat jelas, begitu juga makna dari kalimat tentang mengakhiri
'dengan satu dan angka yang sama'."(Heath 1908:300).
Algoritme Euclid muncul sebagai Proposisi II dalam Book VII ("Elementary Number Theory")
dari Elements. [56] Euclid mengajukan permasalahan: "Ambil dua angka bukan prima, untuk
mencari bilangan pembagi terbesar". Dia menentukan "Sebuah angka [merupakan] besaran
yang terdiri dari unit-unit": angka penghitung, integer positif kecuali 0. Dan "mengukur"
adalah menempatkan ukuran panjang terkecil s dengan tepat (q kali) di antara ukuran
terpanjang l sampai sisa r lebih kecil dari panjang terkecil s. [57] Dalam dunia modern, sisa r =
l - q*s, q sebagai hasil bagi, atau sisa r adalah "modulus", bagian sisa-integer yang tersisa
setelah pembagian. [58]
Supaya metode Euclid berhasil, panjang awalnya harus memenuhi dua kebutuhan: (i)
panjangnya tidak 0, DAN (ii) hasil pengurangan harus "lebih", sebuah pengujian harus
menjamin bahwa bilangan terkecil dari dua angka adalah hasil pengurangan dari yang
terbesar (cara lain, keduanya bisa sama sehingga pengurangan menghasilkan 0).
Pembuktian asli Euclid mengikutkan kebutuhan yang ketiga: kedua panjang bukanlah
bilangan prima. Euclid menentukan hal ini supaya dia bisa membentuk sebuah
bukti reductio ad absurdum bahwa dua pembagi dua angka adalah yang terbesar. [59] Walau
algoritme Nicomachus sama dengan Euclid, bila kedua bilangan prima maka menghasilkan
angka "1" untuk bilangan pembagi terbesar. Jadi untuk lebih jelasnya algoritme berikut
adalah algoritme Nicomachus.
Bahasa komputer untuk algoritme Euclid[sunting | sunting sumber]
Hanya beberapa tipe instruksi yang dibutuhkan untuk mengeksekusi algoritme—beberapa
tes logika (GOTO bersyarat), GOTO tak bersyarat, penetapan (penggantian), dan
pengurangan.
INPUT:
1 [Kedalam dua lokasi L dan S taruh angka l dan s yang merepresentasikan kedua panjang]:
INPUT L, S
2 [Inisialisasi R: buat supaya sisa panjang r sama dengan panjang awal l]
R←L
3 [Pastikan angka terkecil dari kedua angka ada dalam S dan yang terbesar di R]:
IF R > S THEN
isi dari L adalah angka terbesar jadi lewati langkah 4, 5 dan 6:
GOTO step 6
ELSE
tukar isi R dan S.
4 L ← R (langkah pertama ini berlebih, tetapi berguna untuk diskusi nanti).
5R←S
6S←L
E1: [Cari sisa]: Sampai sisa panjang r di R kurang dari panjang terkecil s pada S, kurangi
angka s dalam S berulang kali dari sisa panjang r dalam R.
7 IF S > R THEN
selesai mengukur jadi
GOTO 10
ELSE
ukur lagi,
8R←R-S
9 [Pengulangan-sisa]:
GOTO 7.
E2: [Apakah sisa 0?]: APAKAH (i) pengukuran terakhir adalah sama dan sisa di R adalah 0
program dapat berhenti, ATAU (ii) algoritme harus terus jalan: hasil pengukuran
meninggalkan sisa di R kurang dari angka pengukuran dalam S.
10 IF R = 0 THEN
selesai jadi
GOTO langkah 15
ELSE
lanjut ke langkah 11,
E3: [Interchange s dan r]: Sulitnya algoritme Euclid. Menggunakan sisa r untuk mengukur
angka terkecil sebelumnya s:; L sebagai lokasi sementara.
11 L ← S
12 R ← S
13 S ← L
14 [Ulang proses pengukuran]:
GOTO 7
OUTPUT:
DONE:
Analisis Algoritme
Sangat penting untuk mengetahui berapa banyak sumber tertentu (seperti waktu dan
tempat penyimpanan) secara teoretis diperlukan untuk sebuah algoritme. Metode-metode
telah dikembangkan untuk analisis algoritme untuk mendapatkan jawaban kuantitatif
(estimasi); sebagai contohnya, algoritme pengurutan di atas memerlukan waktu O(n),
menggunakan notasi O besar dengan n sebagai panjang deret (yang akan diurut). Setiap saat
algoritme hanya perlu mengingat dua nilai: nilai terbesar yang ditemukan, dan posisinya
sekarang dideretan input. Oleh karena itu dikatakan memiliki kebutuhan ruang O(1), jika
ruang yang dibutuhkan untuk menyimpan angka masukan tidak dihitung, atau O(n) jika
dihitung.
Algoritme berbeda mungkin menyelesaikan pekerjaan yang sama dengan kumpulan
instruksi yang berbeda dengan waktu, ruang, atau 'usaha' lebih sedikit atau banyak dari
yang lain. Sebagai contohnya, algoritme pencairan binari biasanya mengungguli pencarian
berderet secara paksa bila digunakan untuk tabel pencarian pada deret terurut.
Formal lawan empiris[sunting | sunting sumber]
Artikel utama: Algoritme empiris, Profiling (pemrograman komputer), dan Optimisasi
program
Analisis dan kajian algoritme adalah bidang dari ilmu komputer, dan biasanya dilakukan
secara abstrak tanpa menggunakan bahasa pemrograman tertentu atau implementasi.
Dalam artian, analisis algoritme mirip dengan bidang matematika lainnya yang mana fokus
pada properti yang mendasari algoritme dan bukan pada implementasi tertentu.
Biasanya pseudokode digunakan pada analisis karena merupakan representasi paling umum
dan sederhana. Namun, pada akhirnya, kebanyakan algoritme diimplementasikan di
perangkat keras / lunak tertentu dan efisiensi algoritmik mereka akhirnya diuji
menggunakan kode yang sebenarnya. Untuk solusi dari sebuah masalah, efisiensi dari
algoritme tertentu mungkin tidak terlalu berpengaruh (kecuali n sangat besar) tetapi bagi
algoritme yang dirancang untuk kecepatan interaktif, komersial, atau penggunaan ilmiah
jangka panjang ia bisa saja kritikal. Meningkatkan n dari kecil ke n yang besar biasanya
menunjukan ketak efisienan algoritme yang tidak berbahaya.
Pengujian empiris berguna karena bisa membuka interaksi tak terduga yang mempengaruhi
performa. Benchmark bisa digunakan untuk membandingkan potensi kenaikan
sebelum/sesudah algoritme setelah optimisasi program dilakukan.
Efisiensi eksekusi[sunting | sunting sumber]
Artikel utama: Efisiensi algoritmik
Untuk menggambarkan kemungkinan potensi peningkatan bahkan pada algoritme yang
sudah teruji, inovasi terbaru, berkaitan dengan algoritme FFT (banyak digunakan di bidang
pemrosesan gambar), bisa menurunkan waktu pemrosesan dengan faktor sampai 1.000
untuk aplikasi seperti pencitraan medis. [65] Secara umum, peningkatan kecepatan
bergantung pada properti khusus dari permasalahan, yang mana sangat umum pada aplikasi
praktis. [66] Percepatan dengan tingkat seperti itu membolehkan perangkat komputasi yang
sering menggunakan pemrosesan gambar (seperti kamera digital dan peralatan medis)
menghabiskan daya yang lebih sedikit.
Klasifikasi
Salah satu cara mengklasifikasikan algoritme yaitu dengan cara implementasi.
Rekursi atau iterasi
Sebuah algoritme rekursi yaitu algoritme yang memanggil dirinya sendiri berulang
kali sampai kondisi tertentu tercapai, ini merupakan metode umum
bagi pemrograman fungsional. Algoritme iteratif menggunakan konstruksi berulang
seperti pengulangan dan terkadang struktur data tambahan seperti tumpukan untuk
menyelesaikan permasalahan. Beberapa permasalahan secara alami cocok dengan
satu implementasi atau lainnya. Sebagai contoh, Menara Hanoi dikenal dengan
implementasi rekursif. Setiap versi rekursif memiliki kesamaan (tapi bisa lebih atau
kurang kompleks) dengan versi iteratif, dan sebaliknya.
Logical
Sebuah algoritme bisa dilihat sebagai logika deduksi terkontrol. Pernyataan ini
diekspresikan sebagai: Algoritme = logika + kontrol.[67] Komponen logika
mengekspresikan aksioma yang bisa digunakan dalam komputasi dan komponen
kontrol menentukan cara deduksi digunakan pada aksioma. Ini merupakan dasar dari
paradigma pemrograman logika. Dalam bahasa pemrograman logika murni
komponen kontrol adalah tetap dan algoritme ditentukan dengan memberikan
hanya komponen logikanya. Daya tarik dari pendekatan ini adalah semantik elegan:
sebuah perubahan dalam aksioma memiliki perubahan dalam algoritme.
Serial, paralel atau terdistribusi
Algoritme biasanya dibicarakan dengan asumsi bahwa komputer menjalankan satu
instruksi algoritme setiap waktu. Komputer tersebut terkadang disebut dengan
komputer serial. Rancangan algoritme untuk lingkungan tersebut disebut dengan
algoritme serial, terbalik dengan algoritme paralel atau algoritme terdistribusi.
Algoritme paralel memanfaatkan arsitektur komputer yang mana beberapa prosesor
bisa mengerjakan masalah pada waktu yang sama, selain itu algoritme terdistribusi
memanfaatkan banyak mesin yang terhubung dengan jaringan. Algoritme paralel
atau terdistribusi membagi permasalahan menjadi banyak sub-masalah simetris atau
asimetris dan mengumpulkan hasilnya kembali. Konsumsi sumber pada algoritme
tersebut tidak hanya perputaran prosesor disetiap prosesor tetapi juga daya
komunikasi antara prosesor. Algoritme pengurutan bisa diparalelkan secara efisien,
tetapi biaya komunikasinya sangat mahal. Algoritme iteratif secara umum bisa
diparalelkan. Beberapa permasalahan tidak ada algoritme paralelnya, dan disebut
dengan permasalahan serial lahiriah.
Deterministik atau non-deterministik
Algoritme deterministik menyelesaikan masalah dengan keputusan yang tepat disetiap
langkah dari algoritme sedangkan algoritme non-deterministik menyelesaikan masalah
lewat penerkaan walaupun penerkaan biasanya lebih akurat dengan
menggunakan heuristik.
Tepat atau perkiraan
Bila banyak algoritme sampai pada solusi yang tepat, algoritme perkiraan mencari
sebuah perkiraan yang terdekat dengan solusi benarnya. Perkiraan bisa
menggunakan baik strategi deterministik atau acak. Algoritme seperti itu memiliki
nilai guna untuk banyak permasalahan sulit.
Algoritme quantum
Berjalan di model realistik dari komputasi quantum. Istilah ini biasanya digunakan
untuk algoritme yang tampak pada dasarnya quantum, atau menggunakan beberapa
fitur penting komputasi quantum seperti superposisi quantum atau belitan quantum.
Pemrograman dinamis
Bila sebuah masalah memperlihatkan substruktur optimal, artinya solusi optimal
terhadap sebuah masalah bisa direkonstruksi dari solusi optimal ke sub-masalah,
dan submasalah tumpang-tindih, artinya sub-masalah yang sama digunakan untuk
menyelesaikan banyak instasi masalah berbeda, pendekatan tercepat
disebut pemrograman dinamis menghindari penghitungan solusi yang telah
dikomputasi. Sebagai contoh, algoritme Floyd-Warshall, jalan terpendek ke tujuan
dari sebuah vertex dalam grafik berbobot bisa ditemukan dengan menggunakan
jalan terpendek ke tujuan dari semua simpul yang berdekatan. Pemrograman
dinamis dan memoisasi berpadanan. Perbedaan utama antara pemrograman
dinamis dan bagi-dan-taklukan adalah submasalah kurang lebih independen dalam
bagi-dan-taklukan, sementara submasalah tumpang tindik dalam pemrograman
dinamis. Perbedaaan antara pemrograman dinamis dan rekursi langsung adalah
dalam 'caching' atau memoisasi dari pemanggialan rekursif. Saat submasalah
independen dan tidak ada pengulangan, memoisasi tidak membantu sama sekali;
makanya pemrograman dinamis bukalanh solusi untuk semua permasalahan
kompleks. Dengan menggunakan memoisasi atau tabel dari submasalah yang telah
diselesaikan, pemrograman dinamis mereduksi eksponensial dari banyak
permasalahan menjadi kompleksitas polinomial.
Metode rakus
Sebuah algoritme rakus mirip dengan algoritme pemrograman dinamis, tetapi
perbedaannya adalah solusi dari submasalah tidak harus diketahui pada setiap tahap;
melainkan pilihan yang "rakus" bisa dibuat dengan melihat apa yang terbaik untuk saat
tersebut. Metode rakus mengembangkan solusi dengan kemungkinan keputusan yang
terbaik (bukan dengan keputusan yang ada) pada tahap algoritmis berdasarkan optimasi
lokal yang ada sekarang dan keputusan yang terbaik (bukan semua kemungkinan
keputusan) yang dibuat pada langkah sebelumnya. Algoritme ini tidak terlalu mendalam,
dan tidak memberikan jawaban yang akurat terhadap banyak permasalahan. Tapi bila ia
bekerja, ia menjadi metode yang paling cepat. Algoritme rakus paling terkenal adalah
menemukan rentang pohon minimal seperti pada Pohon Huffman, Kruskal, Prim, Sollin.
Metode heuristik
Dalam masalah optimisasi, algoritme heuristik bisa digunakan untuk menemukan
suatu solusi yang terdekat dengan solusi optimal jika seandainya menemukan solusi
optimal tidak praktis. Algoritme ini bekerja dengan mendekati sedikit demi sedikit ke
solusi optimal saat ia berjalan. Secara prinsipnya, jika dijalankan tanpa batas waktu,
ia akan menemukan solusi optimal. Kebaikan mereka adalah mereka dapat
menemukan suatu solusi sangat dekat dengan solusi optimal dalam waktu yang
relatif sangat pendek. Algoritme tersebut termasuk pencarian lokal, pencarian
tabu, simulasi pelunakan, dan algoritme genetik. Beberapa dari mereka, seperti
simuasi pelunakan, adalah algoritme non-deterministik sementara yang lainnya,
seperti pencarian tabu, adalah deterministik. Saat batas dari galat dari solusi non-
optimal diketahui, algoritme kemudia dikategorikan sebagai algoritme pendekatan.
Algoritme berkelanjutan
Kata sifat "berkelanjutan" bila diterapkan pada kata "algoritme" bisa berarti:
Isu legalitas
Algoritme biasanya tidak dipatenkan. Di Amerika Serikat, sebuah klaim yang terdiri
hanya dari manipulasi sederhana dari konsep abstrak, angka, atau sinyal tidak berarti
suatu "process" (SPTO 2006), dan oleh karena itu algoritme tidak bisa dipatenkan
(sebagaimana dalam Gottschalk v. Benson). Namun, penerapan praktis dari algoritme
terkadang dipatenkan. Sebagai contohnya, dalam Diamond v. Diehr, aplikasi dari
algoritme umpan-balik sederhana untuk membantu dalam menyembuhkan karet
sintetis dianggap dapat dipatenkan. Mematenkan perangkat lunak sangat kontroversial,
dan ada paten yang mengikutkan algoritme yang sangat dikritisi, terutama
algoritme kompresi data, seperti Format Grafiknya Unisys.
Sebagai tambahan, beberapa algoritme kriptografi memiliki batasan ekspor (lihat ekspor
dari kriptografi).
Etimologi]
Kata "Algoritme", atau "Algorisma" pada versi penulisan lain, datang dari nama al-
Khwarizmi. dieja dalam Arab klasik sebagai Al-Khwarithmi. Al-khwarizmi (bahasa
Persia: 850-780 , )خوارزميadalah matematikawan, ahli astronomi, ahli
geografi dari Persia dan sarjana House of Wisdom di Baghdad, yang arti
namanya "penduduk asli Khwarezm", sebuah kota yang merupakan bagian dari Wilayah
Iran pada masanya dan sekarang Uzbekistan. [72] [73] Sekitar tahun 825, dia menulis
risalah dalam bahasa Arab, yang diterjemahkan dalam Latin pada abad ke-12 dengan
judul Algoritmi de numero Indorum. Judul ini artinya "Algoritmi pada bilangan India", di
mana "Algoritmi" adalah pelatinan penerjemah dari nama Al-Khwarizmi. [74] Al-
Khwarizmi dulunya adalah matematikawan yang paling banyak dibaca di Eropa pada
akhir Abad Pertengahan, pada umum lewat bukunya yang lain, Aljabar. [75] Pada akhir
abad pertengahan, algorismus, perubahan dari namanya, berarti "sistem bilangan
desimal" yang masih merupakan arti dari kata Inggris modern algorism. Pada abad ke-17
Prancis kata tersebut berubah, tetapi tidak maknanya, menjadi algorithme. Inggris
mengadopsi Prancis setelahnya, tetapi tidak pada akhir abad ke-19 lah "Algorithm"
mengambil makna dari kata Inggris masa sekarang. [76]
Etimologi alternatif mengklaim asal mulanya dari istilah algebra (aljabar) dari makna
abad pertengahan "aritmetika Arab" dan arithmos istilah Yunani untuk angka (yang
secara harfiah berarti "bilangan Arab" atau "perhitungan Arab"). Karya algoritme Al-
Kharizmi bukan berbentuk seperti pada masa modern sekarang tetapi sebagai tipe dari
pengulangan kalkulus (disini disebutkan bahwa karya fundamentalnya yang dikenal
sebagai algebra pada awalnya berjudul "Buku Ringkasan tentang Kalkulasi dengan
Penyempurnaan dan Pengimbangan" menjelaskan tipe-tipe dari pengulangan
perhitungan dan persamaan kuadrat). Dalam makna tersebut, algoritima dikenal di
Eropa jauh sebelum Al-Kharizmi. Algoritme paling tua yang dikenal sekarang
adalah Algoritme Euklid (lihat juga Pengembangan algoritme Euklid). Sebelum
ditemukan istilah algorithm orang Yunani menyebutnya anthyphairesis secara harfiah
berarti anti-substraksi atau substraksi timbal-balik (untuk bacaan lebih
lanjut disini dan ini Diarsipkan 2013-11-03 di Wayback Machine.. Algoritme dikenal oleh
orang Yunani berabad sebelum [77] Euclid. Bukannya kata algebra orang Yunani
menggunakan istilah arithmetica(ἀριθμητική, yaitu dalam karya Diophantus yang
dikenal "bapak dari Aljabar" - lihat juga artikel Wikipedia persamaan
Diophantine dan Eudoxos).
Ada beberapa cabang ilmu lain yang berhasil beliau kemukakan, antara lain
yang dikenal sebagai ilmu Astronom dan ilmu Geografer. Tak hanya sampai situ
saja, Al-Khawarizmi juga menulis buku yang diberi judul Al Jabar Wal-
Muqabala (The book of Restoration and Reduction) yang artinya Buku
Pemugaran dan Pengurangan.
Hasil pemikiran beliau dalam buku al-Jabar dianggap sebagai revolusi besar
dalam bidang matematika. Beliau berhasil mengintegrasikan konsep-konsep
geometri dari matematika yunani kuno ke dalam konsep matematika yang
baru. Pemikirannya menghasilkan sebuah teori gabungan yang memungkinkan
bilangan rasional, irasional, dan besaran-besaran geometri diperlakukan
sebagai objek-objek aljabar.
Selain itu matematika biner yang digunakan dalam pemrograman juga didasari
oleh konsep algoritma Al Khawarizmi. Perkembangan yang semakin maju bagi
komputer digital dan pemrogramannya tak terlepas dari pemikiran beliau yang
menjadi gerbang kemajuan. Kata algoritma sendiri yang kita kenal sekarang
merupakan kata yang diambil dari kata algorismi yang dilatinisasi dari
namanya.
1. Menemukan konsep aljabar yang kita kenal sekarang melalui buku Al-
Jabr yang berisi mengenai persamaan linear dan kuadrat.
2. Orang yang pertama menjelaskan dan mempopulerkan kembali
penggunaan angka nol (0) serta mengenalkan sistem notasi desimal dan
tanda pengalian dua.
3. Memperkenalkan tanda negatif pada bilangan.
4. Membuat tabel perhitungan astronomi guna mengukur jarak dan
kedalaman bumi. Tabel ini juga menjadi dasar untuk penelitian di bidang
astronomi.
5. Model pembuatan peta dunia yang dituliskan dalam buku ṣūrat al-Arḍ
yang digunakan para ahli geografi barat dalam menggambar peta.
6. Menemukan konsep alat penunjuk waktu dengan bayang sinar matahari
dalam buku sundials.
7. Menemukan konsep dasar algoritma melalui pembahasan aturan-aturan
melakukan aritmatika menggunakan bilangan Hindu-Arab dan solusi
sistematis.
Masih banyak lagi karya-karya beliau semasa hidupnya yang mempengaruhi
ilmu pengetahuan saat ini. Selain ahli matematika Al Khawarizmi juga seorang
ahli geografi, ahli astronomi, ahli astrologi, ahli sejarah bahkan teori mengenai
seni musik dan lukis yang beliau tuliskan dalam bukunya. Beliau merupakan
sosok yang cerdas dalam berbagai bidang dan menjadi cerminan identitas
muslim yang sesungguhnya. Sebagai seorang muslim kamu seharusnya bangga
sekaligus menjadi cambuk bagi kamu yang sering bermalas-malas atau kaum
rebahan.
2.DAVID HILBERT
Pada awalnya, algoritma merupakan sebuah istilah yang merujuk pada aturan-
aturan aritmetis yang digunakan untuk menyelesaikan persoalan dengan
menggunakan bilangan angka arab, solusi sistematis dan persamaan kuadrat.
Pada tahun 1928, David Hilbert seorang matematikawan pertama asal Jerman
yang mendefinisikan apa arti dari “metoda efektif” atau “kalkulasi efektif”.
Baiklah, Hal ini disebabkan karena algoritma mencakup semua prosedur atau
urutan langkah-langkah yang jelas dan diperlukan untuk menyelesaikan suatu
permasalahan yang sedang dihadapi. Dengan adanya Algoritma, masalah-
masalah yang ada pada ilmu komputer dapat dituangkan dalam sebuah
program untuk menyelesaikannya.
3.MUHTAR
Tidak sedikit ilmuwan muslim yang karyanya mempengaruhi dunia. Salah satu
penemuan penting dari ilmuwan muslim itu adalah algoritma.
Algoritma adalah urutan dari sejumlah langkah logis dan sistematis untuk
memecahkan suatu masalah tertentu. Algoritma dianggap sebagai kunci dari
ilmu komputer yang dipakai untuk spesifikasi guna mengolah dan menghitung
suatu data.
Biografi
Al Khawarizmi mempunyai nama lengkap Abu Abdullah Muhammad ibn Musa
Al Khawarizmi. Ia lahir sekitar tahun 780 Masehi di kota Khwarezm, yang kini
berada di wilayah Uzbekistan. Ia wafat sekitar tahun 850 Masehi di Baghdad.
Al Khawarizmi hidup di masa kepemimpinan Al Ma’mun, putra Harun Al Rasyid,
khalifah Daulah Abbasiyah. Pada masa itu, bisa disebut sebagai salah satu masa
kegemilangan Islam di bidang ilmu pengetahuan.
Pada masa Al-Ma’mun berkuasa, dibangun Bait Al Hikmah yang menjadi pusat
penelitian, penerjemahan, hingga publikasi ilmu pengetahuan.
Buku pertama Al Khawarizmi adalah Kitaab al Muhtasar fii Hisaab al Jabr wal
Muqabaala. Buku tersebut membahas solusi sistematik dari persamaan linear
dan persamaan kuadrat.
Kata algorisme dan algoritma diambil dari kata algorismi, latinisasi dari
namanya. Namanya juga diserap dalam bahasa Spanyol, guarismo, dan dalam
bahasa Portugis, algarismo bermakna “digit”.
Ia menyempurnakan peta Ptolemeus dalam karya yang berjudul Kitab Surat al-
Ard. Menurut Paul Gallez, hal ini sangat bermanfaat untuk menentukan posisi
seseorang dalam kondisi yang buruk.
Sumbangan di Bidang Ilmu Komputer
Tidak banyak yang tahu kalau Al Khawarizmi berperang penting dalam
perkembangan ilmu komputer saat ini. Jasa penting Al Khawarizmi itu tidak
lepas dari penemuan algoritma.
3. Abad Pertengahan:
5. Abad ke-19:
6. Abad ke-20:
7. Abad ke-21:
E. SEJARAH
DAFTAR PUSAKA
https://www.gramedia.com/literasi/pengertian-algoritma/ “dibaca pada
pukul 19.23 . 11-10-2023
https://uici.ac.id/mengenal-ilmuwan-muslim-penemu-algoritma-al-
khawarizmi/ “ Dibaca pada pukul 19.33
https://mahasiswa.ung.ac.id/411422029/home/2023/9/6/sejarah-
perkembangan-komputer-dan-algoritma.html “ dibaca pada pukul 19.40
https://elib.unikom.ac.id/files/disk1/575/jbptunikompp-gdl-tetennugra-
28748-9-unikom_t-2.pdf dibaca pada pukul 10.13
https://bamai.uma.ac.id/2021/07/30/al-khawarizmi-bapak-algoritma-dan-
penemu-aljabar/ dibaca pada pukul 15.34
https://www.coe.int/en/web/freedom-expression/algorithms-and-human-
rights . dibaca pada pukul 20.30
TUGAS 1
S1 TEKNIK ELEKTRO
2023
TUGAS 1
S1 TEKNIK ELEKTRO
Nama : Reski afiv maulana
NIM : 202311299
Kelas : D
2023