Pengertian
algoritma adalah prosedur langkah-demi-langkah untuk
penghitungan. Algoritma digunakan untuk penghitungan, pemrosesan data, dan
penalaran otomatis.
Algoritma adalah
metode efektif diekspresikan sebagai rangkaian terbatas dari
instruksi-instruksi yang telah didefinisikan dengan baik untuk menghitung
sebuah fungsi. Dimulai dari sebuah kondisi awal dan input awal (mungkin
kosong), instruksi-instruksi tersebut menjelaskan sebuah komputasi yang, bila
dieksekusi, diproses lewat sejumlah urutan kondisi terbatas yang terdefinisi
dengan baik, yang pada akhirnya menghasilkan "keluaran" dan berhenti di kondisi akhir. Transisi dari
satu kondisi ke kondisi selanjutnya tidak harus deterministik; beberapa
algoritma, dikenal dengan algoritma pengacakan, menggunakan masukan acak
Sejarah: Perkembangan dari kata "algoritma"
Asal mula
Kata
algoritma datang dari nama matematikawan Persia abad ke-9 Abu Abdullah Muhammad
ibnu Musa Al-Khwarizmi, yang hasil kerjanya dibangun dari matematikawan India
abad ke-7 Brahmagupta. Kata algorisma awalnya mengacu hanya pada aturan-aturan
dalam melakukan aritmetika menggunakan bilangan Hindu-Arab namun berkembang
lewat penerjemahan Latin Eropa dari nama Al-Khwarizmi menjadi algoritma pada
abad ke-18. Penggunaan kata tersebut berkembang mengikutkan semua prosedur
untuk menyelesaikan masalah atau melakukan unit kegiatan.
Simbol diskrit dan
yang dapat dibedakan
Penanda-penghitung:
Untuk mencatat hewan gembalaan, kumpulan biji dan uang mereka orang dahulu
menggunakan penghitung: akumulasi batu atau tanda yang ditoreh pada tongkat,
atau membuat simbol diskrit di kerang. Sampai orang Babilonia dan Mesir
menggunakan tanda dan simbol, pada akhirnya bilangan Roma dan abakus berkembang
(Dilson, p. 16-41). Penanda penghitung muncul dalam sistem bilangan operan
aritmetika digunakan dalam mesin Turing dan komputasi mesin Post-Turing.
Manipulasi simbol sebagai "penampung" bilangan: aljabar
Karya dari Geometer
Yunani kuno (algoritma Euklid), matematikawan India Brahmagupta, dan
matematikawan Persia Al-Khwarizmi (yang darinya isitlah "algorism"
dan "algoritma" diturunkan), dan matematikawan Eropa Barat memuncak
dalam notasi Leibniz dari rasiosinator kalkulus (sekitar 1680-an):
Abad yang baik dan
setengah lebih maju dari masanya, Leibniz mengajukan logika aljabar, sebuah
aljabar yang akan menentukan aturan-aturan untuk memanipulasi konsep logika
dengan cara yang aljabar biasa menentukan aturan untuk manipulasi angka.
Rancangan mekanis dengan tingkat diskrit
Jam: Bolter memuji
penemuan jam gaya-berat sebagai "Kunci penemuan dari Eropa pada Abad
Pertengahan", khususnya pada ambang pelarian yang menyediakan kita dengan tik dan tak dari
jam mekanis. "Mesin otomatis yang akurat" mengarah langsung pada "otomata
mekanis" dimulai pada abad ke-13 dan terakhir pada "mesin
komputasi" -- motor berbeda dan motor analitik dari Charles Babbage dan
bangsawan Ada Lovelace, pertengahan abad ke-19. Lovelace dikreditkan sebagai
yang pertama menciptakan algoritma yang ditujukan untuk diproses di
komputer—motor analitis Babbage, perangkat pertama yang dianggap komputer
Turing-sempurna sebenarnya bukan hanya sebuah kalkulator—dan terkadang dikenal "programmer
pertama dalam sejarah", walaupun implementasi penuh dari perangkat Babbage
kedua tidak terealisasi sampai beberapa dekade setelah masanya.
Mesin logika 1870 -
Stanley Jevons "sempoa logika" dan "mesin logika": Masalah
teknisnya adalah untuk mereduksi persamaan boolean bila ditampilkan dalam
sebuah bentuk yang pada masa sekarang dikenal sebagai pemetaan Karnaugh. Jevons
(1880) pertama menjelaskan "sempoa" sederhana dari "potongan
kayu dilengkapi dengan penyemat, dibuat supaya bagian atau kelas kombinasi
logika manapun dapat dipilih secara mekanis ... Baru-baru ini Saya telah
mereduksi sistem menjadi bentuk yang secara sempurna mekanis, dan membuatnya
mewujudkan keseluruhan proses inferensi tak langsung dalam apa yang disebut
sebuah Mesin Logika" Mesinnya dilengkapi dengan "beberapa tangkai
kayu yang bisa dipindahkan" dan "di bawah ada 21 kunci seperti pada
piano [dll] ...". Dengan mesin ini dia dapat menganalis sebuah
"silogisme atau argumen logika sederhana apapun".
Mesin tenun Jacquard,
kartu berlobangnya Hollerith, telegraf dan telepon -- penyiaran elektromekanis:
Bell dan Newell (1971) mengindikasikan bahwa mesin tenun Jacquard (1801),
pelopor dari kartu Hollerith (kartu berlobang, 1887), dan "teknologi alih
telepon" adalah akar dari sebuah pohon yang mengarah pada perkembangan dari
komputer pertama. Pada pertengahan abad ke-19 telegraf, pelopor dari telepon,
digunakan diseluruh dunia, pengkodean diskrit dan pembedaan huruf sebagai
"titik dan strip". Pada akhir abad ke-19 pita telegraf (sekitar
1870-an) digunakan, sebagaimana juga kartu Hollerith pada sensus Amerika 1890.
Kemudian muncullah teleprinter (sekitar 1910-an) dengan kerta-berlobang menggunakan
kode Baudot di pita.
Jaringan alih-telepon
dari penyiaran elektromekanis (ditemukan 1835) adalah karya dair George Stibitz
(1937), penemu dari perangkat penghitungan digital. Saat bekerja di
laboratorium Bell, dia mengamati "beratnya" penggunaan kalkulator
mekanis dengan geligi. "Dia pulang ke rumah pada suatu malam 1937 berniat
untuk menguji idenya ... Saat mengatik selesai, Stibitz telah membangun
perangkat hitung digital".
Davis (2000) mengamati
pentingnya penyiaran elektromekanis (dengan "keadaan binari"-nya buka
dan tutup):
Hanya dengan
perkembangan, dimulai sejak 1930-an, dari kalkulator elektromekanis menggunakan
penggantian elektris, sehingga mesin yang dibuat memiliki ruang lingkup yang
dibayangkan Babbage."
Matematika selama abad 19 sampai pertengahan abad 20
Simbol dan aturan:
Dengan cepat berkembangnya matematika dari George Boole (1847, 1854), Gottlob
Frege (1897), dan Giuseppe Peano (1888-1889) mereduksi aritmetika menjadi
serangkaian simbol dimanipulasi oleh aturan-aturan. The Principles of
arithmetic, presented by a new method-nya Peano (1888) adalah "usaha
pertama mengaksiomakan matematika dalam sebuah bahasa simbolik".
Tapi Heijenoort
memberi pujian pada Frege (1879): Frege "merupakan karya tulis paling
penting mengenai logika. ... yang mana kita lihat sebuah "'bahasa
formula', yaitu sebuah lingua characterica, sebuah bahasa ditulis dengan
simbol-simbol khusus, "untuk berpikir murni", yaiut, bebas dari
hiasan retorikal ... dibangun dari simbol-simbol tertentu yang dimanipulasi
menurut aturan-aturan terbatas". Karya dari Frege lebih lanjut disederhanakan
dan diperkuat oleh Alfred North Whitehead dan Bertrand Russell dalam Principia
Mathematical (1910-1913).
Paradoks: Pada masa
yang sama sejumlah paradoks yang mengganggu muncul dalam literatur, pada
khususnya paradoks Burali-Forti (1987), paradoks Russell (1902-03), dan
Paradoks Richard. Hasilnya mengarah ke
makalah Kurt Godel (1931) -- dia secara khusus merujuk paradoks pembohong—yang
mereduksi aturan dari rekursi pada angka.
Penghitungan Efektif:
Dalam usaha untuk menyelesaikan permasalahan keputusan yang didefinisikan oleh
Hilbert tahun 1928, matematikawan pertama mendefinisikan apa arti dari
"metode efektif" atau "kalkulasi efektif" (misalnya, sebuah
kalkulasi yang akan sukses). Dalam waktu yang cepat hal berikut muncul: kalkulus-λ
oleh Alonzo Church, Stephen Kleene, dan J.B. Rosser definisi dari "rekursi
umum" yang benar-benar diasah dari karya Godel berdasarkan saran dari
Jacquard Herbrand (cf. kuliah Godel di Princeton tahun 1934) dan penyederhaan
selanjutnya oleh Kleene. Church membuktikan bahwa permasalahan keputusan tidak
terpecahkan, definisi Emil Post tentang penghitungan efektif yaitu sebagai
pekerja yang tanpa berpikir mengikuti suatu daftar instruksi untuk bergerak ke
kiri atau kanan lewat sederetan ruangan dan bersamaan dengan itu bisa menandai
atau menghapus kertas atau mengamati kertas dan membuat pilihan ya-tidak
tentang instruksi selanjutnya. Pembuktian Alan Turing bahwa permasalahan
keputusan tidak terpecahkan dengan menggunakan "sebuah mesin
[otomatis]"-nya [dengan efek yang mirip dengan "formulasi"-nya
Post, definisi J. Barkley Rosser tentang "metode efektif" dalam makna
"sebuah mesin". Proposal S. C. Kleene dari pelopor "Tesis
Church" yang disebutnya "Thesis I", dan beberapa tahun kemudian
Kleene menamakan tesisnya "Tesis Church" dan mengajukan "Tesis Turing".
Emil Post (1936) dan Alan Turing (1936-37, 1939)
Berikut adalah
kebetulan yang luar biasa dari dua orang yang tidak saling mengenal tetapi
mendeskripsikan sebuah proses orang-sebagai-komputer mengerjakan
perhitungan—dan mereka menghasilkan definisi yang mirip.
Emil Post (1936)
mendeskripsikan aksi dari sebuah "komputer" (manusia) sebagai
berikut:
"... dua konsep
ikut serta: yaitu sebuah simbol ruang dimana pekerjaan yang mengarah dari
masalah ke jawaban dilakukan, dan sekumpulan arahan yang baku dan tidak bisa
diubah.
Simbol ruangnya yaitu
"sederetan dua
arah tak terbatas dari ruang atau kotak... penyelesai masalah atau pekerja
harus berjalan dan bekerja di simbol ruang ini, dengan bisanya [si pekerja]
masuk, dan beroperasi dengan satu kotak dalam satu waktu... sebuah kotak
memiliki dua kemungkinan kondisi, yaitu, kosong atau belum ditandai, dan dengan
adanya tanda tunggal disana, katakanlah garis vertikal.
"Satu kotak
dibiarkan dan disebut sebagai titik awal. ...sebuah masalah tertentu diberikan
dalam bentuk simbolik dengan sejumlah kotak terbatas [yaitu, INPUT] ditandai
dengan coretan. Begitu juga jawabannya [yaitu, OUTPUT] diberikan dalam bentuk
simbolik dari suatu konfigurasi dari kotak-kotak yang ditandai....
"Sekumpulan
arahan bisa digunakan untuk permasalahan umum menentukan proses determistik
saat diterapkan pada setiap masalah tertentu. Proses ini hanya berhenti bila
datang arahan dengan tipe (C ) [yaitu, STOP]". Lihat lebih lanjut pada
mesin post-Turing
Patung Alan Turing di
Taman Bletchley.
Karya Alan Turing [87]
mendahului karya dari Stibitz (1937); tidak diketahui apakah Stibitz mengetahui
karya Turing. Biografinya Turing percaya bahwa Turing menggunakan model
seperti-mesin-ketik diturunkan dari ketertarikannya pada masa muda: "Alan
memiliki impian menemukan mesin ketik pada saat muda; Ibu Turing memiliki
sebuah mesin ketik; dan dia mungkin memulainya dengan menanyakan pada dirinya
sendiri apa maksudnya dengan menyebut sebuah mesin ketik dengan
'mekanikal'". Dengan lazimnya kode Morse dan telegraf, mesin pita
telegraf, dan mesin-ketik jarak jauh pada waktu itu kita bisa menyimpulkan
bahwa semua itu memberikan pengaruh.
Turing—model dari
komputasinya sekarang dikenal dengan mesin Turing—memulai, sebagaimana Post,
dengan analisis dari komputer manusia yang ia sederhanakan menjadi sekumpulan
gerakan dasar sederhana dan "keadaan pikiran". Tapi dia terus maju
selangkah ke depan dan membuat sebuah mesin sebagai model dari komputasi angka.
"Menghitung
biasanya dilakukan dengan menulis simbol tertentu di atas kertas. Misalkan kertas
tersebut dibagi menjadi segi empat seperti buku aritmetika anak-anak.... Saya
asumsikan bahwa komputasi dilakukan pada kertas satu dimensi, yaitu, di pita
yang dibagi dalam persegi. Juga misalkan bahwa jumlah simbol yang akan dicetak
terbatas....
"Perilaku dari
komputer disetiap waktu ditentukan oleh simbol yang diobservasinya, dan
"keadaan pikiran"-nya pada waktu tersebut. Juga bisa diasumsikan
bahwa ada batas B sebagai jumlah simbol atau persegi yang mana komputer dapat
amati dalam satu waktu. Jika ia ingin mengamati lebih, ia harus menggunakan
pengamatan beriringan. Kita juga memisalkan bahwa jumlah keadaan pikiran yang
diperlukan disini adalah terbatas...
"Mari kita
bayangkan bahwa operasi yang dilakukan oleh komputer akan dipecah menjadi
'operasi-operasi sederhana' yang sangat mendasar sehingga tidak mudah
membayangkannya untuk dibagi lebih jauh."
Reduksi Turing
menghasilkan hal berikut:
"Operasi
sederhana haruslah mengikutkan:
"(a) Perubahan
dari simbol pada salah satu persegi yang sedang diamati
"(b) Perubahan
dari salah satu persegi diamati terhadap persegi lainnya di antara L persegi
dari salah satu yang sebelumnya diamati.
"Bisa saja
beberapa dari perubahan tersebut menyebabkan perubahan keadaan pikiran. Operasi
tunggal paling umum oleh karena itu harus diambil jadi salah satu hal berikut:
"(A) Suatu
kemungkinan perubahan (a) dari simbol bersamaan dengan suatu perubahan dari
keadaan pikiran.
"(B) Suatu
kemungknian perubahan (b) dari persegi yang diamati, bersama dengan kemungkinan
perubahan dari keadaan pikiran"
"Kita sekarang
mungkin sudah bisa membentuk sebuah mesin untuk melakukan pekerjaan dari
komputer tersebut."
Beberapa tahun
kemudian, Turing mengembangkan analisanya (tesis, secara definisi) dengan
ekspresi kuat berikut:
"Sebuah fungsi
dikatakan "bisa dihitung secara efektif" jika nilainya bisa ditemukan
dengan proses yang murni mekanis.
Walau sangat mudah
menangkap ide ini, namun ia membutuhkan beberapa definisi matematikan terbatas
yang bisa diekspresikan . . . [dia mendiskusikan sejarah dari definisi seperti
di atas dengan menghormati Godel, Herbrand, Kleen, Church, Turing dan Post] ...
Kita mungkin gunakan pernyataan tersebut secara harfiah, memahami murni dengan
proses mekanis yang mana dapat dilakukan oleh sebuah mesin. Memungkinkan untuk
memberikan deskripsi matematis, dalam beberapa bentuk normal, dari struktur
mesin tersebut. Perkembangan dari ide ini mengarah pada definisi penulis dari
sebuah fungsi yang dapat dihitung, dan untuk mengidentifikasi komputibilitas †
dengan penghitungan yang efektif . . . .
"† Kita boleh
menggunakan ekspresi "fungsi hitung" untuk mengartikan sebuah fungsi
yang dapat dihitung oleh sebuah mesin, dan kita biarkan "secara efektif
dapat dihitung" mengacu pada ide intuitif tanpa definisi tertentu dengan
salah satu dari definisi tersebut".
J. B. Rosser (1939)
dan S. C. Kleene (1943)[sunting | sunting sumber]
J. Barkley Rosser
mendefinisikan 'metode [matematis] efektif' dengan cara berikut (kemiringan
ditambahkan):
"'Metode efektif'
disebut sebagai metode yang spesial yang mana setiap langkahnya secara tepat
ditentukan dan pasti menghasilkan jawaban dalam sejumlah langkah yang terbatas.
Dengan pengertian khusus ini, tiga definisi berbeda telah diajukan sampai sekarang.
[catatan kakinya #5; lihat diskusinya di bawah]. Yang paling sederhana (karena
Post dan Turing) menyatakan intinya bahwa sebuah metode efektif menyelesaikan
sekumpulan permasalahan hanya ada jika seseorang bisa membuat sebuah mesin yang
akan menyelesaikan setiap masalah dari sekumpulan masalah tanpa campur tangan
manusia kecuali memasukan pertanyaan dan (nantinya) membaca jawabannya. Ketiga
definisi tersebut sama, jadi tidak masalah yang mana yang digunakan. Lebih
lanjut, fakta bahwa ketiganya sama adalah argumen yang sangat kuat untuk
kebenaran dari salah satunya." (Rosser 1939:225-6)
Catatan kaki Rosser #5
merujuk karya dari (1) Church dan Kleene dan definisi dari definabiliti-λ,
secara khusus Church menggunakannya dalam An Unsolvable Problem of Elementary
Number Theory-nya (1936); (2) Herbrand dan Godel dan penggunaan rekursi mereka
terutama Godel menggunakannya dalam makalah terkenalnya On Formally Undecidable
Propositions of Principia Mathematica and Related Systems I (1931); dan (3)
Post (1936) dan Turing (1936-7) dalam model mekanisme komputasi mereka.
Stephen C. Kleene
didefinisikan sebagai "Thesis I"-nya yang terkenal yang dikenal
sebagai tesis Church-Turing. Tapi dia melakukan hal tersebut dalam konteks berikut
(penebalan dari aslinya):
"12. Teori-teori
algoritma... Dalam menyiapkan sebuah teori algoritma yang komplet, apa yang
kita lakukan adalah mendeskripsikan sebuah prosedur, yang dapat dilakukan untuk
setiap kumpulan nilai dari variabel-variabel tunggal, yang mana prosedur
berhenti dan dengan cara tersebut dari hasilnya kita bisa membaca sebuah
jawaban tertentu, "ya" atau tidak", untuk pertanyaan
"apakah nilai predikat benar?"" (Kleene 1943:273)
Sejarah setelah 1950
Sejumlah usaha telah diarahkan untuk
memperbaiki lebih lanjut definisi dari "algoritma", dan aktivitas
tersebut masih terus berjalan karena isu-isu yang mengelilinginya, terutama,
fondasi matematika (khususnya tesis Church-Turing) dan filsafat pikiran
(khususnya argumen menyangkut kecerdasan buatan). Lebih lanjut, lihat
karakterisasi algoritma.
Klasifikasi
Salah satu cara mengklasifikasikan algoritma yaitu dengan
cara implementasi.
Rekursi atau iterasi
Sebuah algoritma rekursi yaitu algoritma yang memanggil
dirinya sendiri berulang kali sampai kondisi tertentu tercapai, ini merupakan
metode umum bagi pemrograman fungsional. Algoritma 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 algoritma bisa dilihat sebagai logika deduksi
terkontrol. Pernyataan ini diekspresikan sebagai: Algoritma = logika +
kontrol.[56] 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 algoritma ditentukan dengan
memberikan hanya komponen logikanya. Daya tarik dari pendekatan ini adalah
semantik elegan: sebuah perubahan dalam aksioma memiliki perubahan dalam
algoritma.
Serial, paralel atau terdistribusi
Algoritma biasanya dibicarakan dengan asumsi bahwa
komputer menjalankan satu instruksi algoritma setiap waktu. Komputer tersebut
terkadang disebut dengan komputer serial. Rancangan algoritma untuk lingkungan
tersebut disebut dengan algoritma serial, terbalik dengan algoritma paralel
atau algoritma terdistribusi. Algoritma paralel memanfaatkan arsitektur
komputer yang mana beberapa prosesor bisa mengerjakan masalah di waktu yang
sama, selain itu algoritma terdistribusi memanfaatkan banyak mesin yang
terhubung dengan jaringan. Algoritma paralel atau terdistribusi membagi
permasalahan menjadi banyak sub-masalah simetris atau asimetris dan
mengumpulkan hasilnya kembali. Konsumsi sumber pada algoritma tersebut tidak
hanya perputaran prosesor disetiap prosesor tetapi juga daya komunikasi antara
prosesor. Algoritma pengurutan bisa diparalelkan secara efisien, tetapi biaya
komunikasinya sangat mahal. Algoritma iteratif secara umum bisa diparalelkan.
Beberapa permasalahan tidak ada algoritma paralelnya, dan disebut dengan
permasalahan serial lahiriah.
Deterministik atau non-deterministik
Algoritma deterministik menyelesaikan masalah dengan
keputusan yang tepat disetiap langkah dari algoritma sedangkan algoritma
non-deterministik menyelesaikan masalah lewat penerkaan walaupun penerkaan
biasanya lebih akurat dengan menggunakan heuristik.
Tepat atau perkiraan
Bila banyak algoritma sampai pada solusi yang tepat,
algoritma perkiraan mencari sebuah perkiraan yang terdekat dengan solusi
benarnya. Perkiraan bisa menggunakan baik strategi deterministik atau acak.
Algoritma seperti itu memiliki nilai guna untuk banyak permasalahan sulit.
Algoritma quantum
Berjalan di model realistik dari komputasi
quantum. Istilah ini biasanya digunakan untuk algoritma yang tampak pada
dasarnya quantum, atau menggunakan beberapa fitur penting komputasi quantum
seperti superposisi quantum atau belitan quantum.
Bentuk Dasar Algoritma
Algoritma sendiri mempunyai tiga 3 bentuk dasar, antara
lain :
Algoritma Sekuensial (Sequence Algorithm)
Sequence algorithm atau algoritma sekuensial merupakan
algoritma yang langkah-langkahnya secara urut dari awal hingga akhir. Bentuk
dari algoritma sekuensial ini salah satu contohnya seperti algoritma memasak air.
Langkah demi langkah yang dijalankan harus urut dari atas sampai bawah.
Algoritma Perulangan (Looping Algorithm)
Looping algorithm atau algoritma perulangan merupakan
suatu algoritma yang menjalankan beberapa langkah tertentu secara
berulang-ulang atau looping. Pada masalah yang kita hadapi, ada pula sebuah
langkah yang harus kita lakukan secara berulang-ulang. Contoh dari algoritma
looping ini adalah algoritma menjemur pakaian:
1) Siapkan jemuran.
2) Ambil satu pakaian yang nantinya akan dijemur.
3) Peras pakaian tersebut terlebih dahulu.
4) Letakkan pakaian tersebut pada tiang jemuran.
5) Ulangi langkah dari 2 sampai 4 hingga pakaian habis.
Dari algoritma di atas, dapat diketahui bahwa dari
langkah 2 sampai 4 harus dilakukan secara berulang-ulang hingga pakaian habis.
Algoritma Percabangan atau Bersyarat
(Conditional Algorithm)
Conditional algorithm atau algoritma bersyarat merupakan
algoritma yang menjalankan langkah berikutnya apabila terdapat syarat yang
sudah dapat dipenuhi. Berikut salah satu contoh dari algoritma bersyarat :
1) Siapkan panci.
2) Masukkan air secukupnya ke dalam panci.
3) tutup panci tersebut.
4) letakkan panci tersebut di atas kompor.
5) Hidupkan kompor.
6) Apabila air sudah mendidih, lalu matikan kompor.
7) Angkat panci tersebut dari kompor.
Algoritma bersyarat atau contional algorithm terdapat
pada langkah ke 6. Apabila air sudah mendidih, lalu matikan kompor. Sehingga
apabila air tersebut belum mendidih, maka kompor tidak dimatikan.
Ciri Penting Algoritma
1. Algoritma harus
berhenti setelah menjalankan sejumlah langkah terbatas.
2. Setiap langkah
harus didefinisikan dengan tepat dan tidak berarti-dua (ambiguitas).
3. Algortima
memiliki nol atau lebih masukan.
4. Algoritma
memiliki nol atau lebih keluaran.
5. Algoritma harus
efektif (setiap langkah sederhana sehingga dapat dikerjakan dalam waktu yang
masuk akal).
Merancang Algoritma yang Baik
Menurut Donald E. Knuth, dari pengertian algoritma diatas
dapat diketahui bahwa sebuah algoritma yang baik yaitu algoritma yang mempunyai
kriteria sebagai berikut :
Masukan (Input)
Algoritma mempunyai input 0 (nol) atau lebih
Keluaran (Output)
Algoritma harus menghasilkan atau mengeluarkan minimal 1
output.
Terbatas (Finite)
Algoritma harus berhenti setelah melakukan
langkah-langkah yang diperlukan.
Pasti (Definite)
Algoritma harus jelas kapan dimulai dan berakhir. Tujuan
dari algoritma harus jelas. Setiap langkah-langkah harus dijelaskan dengan
jelas.
Efisien
Membuat sebuah algoritma haruslah efisien. Adanya langkah
seperti mencari hasil 1 + 0 tidak efisien. Hal ini karena bilangan apapun itu
jika ditambah dengan nol maka hasilnya ialah bilangan itu sendiri. Sehingga
adanya langkah seperti itu tidak perlu dimasukkan ke dalam sebuah algoritma.
Contoh Algoritma
Algoritma TUKAR ISI BEJANA
Diberikan 2 buah bejana A dan B, bejana A berisi larutan
berwarna merah, bejana B berisi larutan berwarna biru. Tukarkan isi kedua
bejana itu sedemikian sehingga bejana A berisi larutan warna biru dan bejana B
berisi larutan berwarna merah.
Deskripsi:
1. Tuangkan
larutan dari bejana A ke dalam bejana B
2. Tuangkan
larutan dari bejana B ke dalam bejana A
Algoritma TUKAR ISI BEJANA di atas tidak menghasilkan
pertukaran yang benar. Langkah di atas tidak logis, hasil pertukaran yang
terjadi adalah pertukaran kedua larutan tersebut.
Untuk itu pertukaran isi dua bejana, diperlukan sebuah
tambahan sebagai tempat penampungan sementara, misalnya bejana C. Maka
algoritma untuk menghasilkan pertukaran yang benar adalah sebagai berikut:
Diberikan dua buah bejana A dan B, bejana A berisi
larutan berwarna merah, bejana B berisi larutan berwarna biru. Tukarkan isi
kedua bejana itu sedemikian hingga bejana A berisi larutan berwarna biru dan
bejana B berisi larutan berwarna merah.
Deskripsi:
1. Tuangkan
larutan dari bejana A ke dalam bejana C.
2. Tuangkan
larutan dari bejana B ke dalam bejana A.
3. Tuangkan
larutan dari bejana C ke dalam bejana B.
Implementasi
Kebanyakan algoritma ditujukan untuk diimplementasikan
sebagai program komputer. Namun, algoritma 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.
sumber :