Asal kata
'Algoritme' muncul dari 'Algoritmi', bentuk
Latin dari al-Khwarizmi, matematikawan,
ahli astronomi, dan ahli geografi dari
Persia.[11][12]
Definisi informal
Definisi informalnya bisa berarti
"sekumpulan aturan yang secara tepat
menentukan seurutan operasi". [13] yang
mengikutkan semua program komputer,
termasuk program yang tidak melakukan
perhitungan numerik. Secara umum,
sebuah program hanyalah sebuah
algoritme jika ia akan berhenti nantinya.
[14]
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):
Menggambarkan algoritme
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.
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
Info lebih lanjut: Contoh algoritme
Contoh Algoritme
Deskripsi tingkat-tinggi:
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
Ekspresi grafik dari algoritme Euclid menggunakan
contoh dengan 1599 dan 650.
INPUT:
7 IF S > R THEN
selesai mengukur jadi
GOTO 10
ELSE
ukur lagi,
8 R ← R - S
9 [Pengulangan-sisa]:
GOTO 7.
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:
15 [Selesai. S berisi
faktor persekutuan
terbesar]:
PRINT S
DONE:
Menghitung dan
meningkatkan algoritme
Euclid
Elegan (kepadatan) lawan kebaikan
(kecepatan): Dengan hanya 6 instruksi
dasar, "Elegan" adalah jelas pemenang
dibandingkan dengan instruksi "inelegan"
dengan 13 instruksi. Namun, "inelegan"
lebih cepat (ia sampai pada HALT
dengan langkah lebih sedikit). Analisis
algoritme [52] mengindikasikan kenapa
hal tersebut terjadi: "Elegan" melakukan
pengujian kondisi dua kali disetiap
pengulangan pengurangan, sementara
"inelegan" hanya sekali. Bila algoritme
(biasanya) membutuhkan banyak
pengulangan, secara rata-rata lebih
banyak waktu yang terbuang saat
melakukan tes "B = 0?" yang hanya
diperlukan saat sisa sudah dihitung.
Bisakah algoritme ditingkatkan?: Bila
programmer sudah menilai sebuah
program "cocok" dan "efektif"—yaitu, ia
menghitung fungsi yang ditujukan oleh
penulisnya—maka pertanyaannya
menjadi, bisakah ditingkatkan?
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.
Efisiensi eksekusi
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.[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 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 di 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.
Paradigma secara
rancangan
Cara lain mengklasifikasikan algoritme
adalah dengan metodologi rancangannya
atau paradigma. Ada sejumlah
paradigma, tiap-tiapnya berbeda dari
yang lain. Lebih lanjut, setiap kategori
tersebut mengikutkan banyak tipe
algoritme yang berbeda. Beberapa
paradigma umum termasuk:
Permasalahan optimisasi
Pemrograman Linear
Saat mencari solusi optimal terhadap
sebuah fungsi linear yang terikat
persamaan linear dan ketidaksamaan
konstrain, batasan dari permasalahan
bisa digunakan secara langsung untuk
menghasilkan solusi optimal. Ada
algoritme yang dapat memecahkan
setiap permasalahan dalam kategori
ini, seperti algoritme simpleks yang
terkenal.[59] Permasalahan yang dapat
diselesaikan dengan pemrograman
linear termasuk permasalahan alur
maksimum untuk grafik terarah). Jika
sebuah masalah sebagai tambahan
membutuhkan satu atau lebih jawaban
haruslah integer maka ia diklasifikan
dalam pemrograman integer.
Algoritme pemrograman linear dapat
menyelesaikan masalah seperti itu jika
dapat dibuktikan bahwa semua
batasan untuk nilai integer adalah
tidak benar, yaitu solusi memenuhi
batasan tersebut. Pada kasus umum,
algoritme yang dikhususkan atau
algoritme yang menemukan solusi
perkiraan digunakan, bergantung pada
kesulitan dari permasalahan.
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.
Berdasarkan kompleksitas
Algoritme bisa diklasifikasikan
berdasarkan jumlah waktu yang
dibutuhkan untuk selesai dibandingkan
dengan ukuran inputnya. Ada berbagai
varietas: beberapa algoritme selesai
dalam waktu linear relatif terhadap
ukuran input, beberapa selesai dalam
jumlah waktu yang eksponensial atau
lebih buruh, dan beberapa berhenti.
Sebagai tambahan, beberapa masalah
bisa memiliki berbagai algoritme dengan
kompleksitas yang berbeda, sementara
permasalahan yang lain bisa saja tidak
memiliki algoritme atau tidak diketahui
algoritmanya yang efisien. Ada juga
pemetaan dari beberapa algoritme
terhadap permasalahan lain. Karena itu,
lebih cocok untuk mengklasifikasikan
permasalahan itu sendiri bukannya
algoritme menjadi kelas-kelas yang sama
berdasarkan kompleksitas dari
kemungkinan algoritme terbaik baginya.
Isu legalitas
Lihat pula: Paten perangkat lunak untuk
pendahuluan umum dari paten pada
perangkat lunak, termasuk algoritme
untuk diimplementasikan pada
komputer.
Lihat juga
Mesin abstrak
Rekayasa algoritme
Komposisi algoritmik
Sintesis algoritmik
Algoritme trading
Sampah masuk, sampah keluar
Pendahuluan untuk Algoritme
Daftar topik algoritme umum
Daftar publikasi penting dalam ilmu
komputer teoretis - Algoritme
Numerical Mathematics Consortium
Teori komputasi
Teori komputabilitas
Teori kompleksitas Komputasi
Referensi
1. ^ "Setiap algoritme klasik, misalnya,
bisa dijelaskan dengan sejumlah kata
bahasa Inggris yang terbatas" (Rogers
1987:2).
2. ^ Telah didefinisikan terhadap agen
yang menjalankan algoritme tersebut:
"Ada agen komputasi, biasanya manusia,
yang bisa beraksi terhadap instruksi dan
melakukan komputasi" (Rogers 1987:2).
3. ^ "Sebuah algoritme adalah sebuah
prosedur untuk menghitung sebuah fungsi
(terhadap beberapa notasi terpilih integer)
... batasan ini (terhadap fungsi bilangan)
tanpa kehilangan generalisasi", (Rogers
1987:1).
4. ^ Sebuah algoritme memiliki input nol
atau lebih, yaitu, kuantitas yang diberikan
padanya sejak awal sebelum algoritme
dijalankan" (Knuth 1973:5).
5. ^ "Sebuah prosedur yang memiliki
semua karakteristik dari sebuah algoritme
kecuali prosedur yang tidak memiliki
keterbatasan bisa disebut sebagai sebuah
'metode komputasi'" (Knuth 1973:5).
6. ^ "Sebuah algoritme memiliki satu atau
lebih keluaran, yaitu kuantitas yang
memiliki relasi tertentu terhadap
masukan" (Knuth 1973:5).
7. ^ Apakah sebuah proses dengan
proses-proses bagian dalam yang acak
(tidak termasuk masukan) adalah sebuah
algoritme atau bukan masih
diperdebatkan. Rogers beropini bahwa:
"sebuah komputasi dilakukan dengan
sebuah gaya diskrit bertahap, tanpa
menggunakan metode-metode
berkelanjutan atau perangkat analog ...
dijalakan terus secara deterministik, tanpa
menggunakan metode-metode atau
perangkat acak, misalnya, dadu" Rogers
1987:2
8. ^ Kleene 1943 dalam Davis 1965:274
9. ^ Rosser 1939 dalam Davis 1965:225
10. ^ Moschovakis, Yiannis N. (2001).
"What is an algorithm?". Dalam Engquist,
B.; Schmid, W. Mathematics Unlimited —
2001 and beyond . Springer. hlm. 919–936
(Part II). ISBN 9783540669135.
11. ^ a b Hogendijk, Jan P. (1998). "al-
Khwarzimi" . Pythagoras. 38 (2): 4–5.
ISSN 0033-4766 . Kesalahan pengutipan:
Tanda <ref> tidak sah; nama
"Hogendijk" didefinisikan berulang
dengan isi berbeda
12. ^ a b Oaks, Jeffrey A. "Was al-
Khwarizmi an applied algebraist?" .
University of Indianapolis. Diakses tanggal
2008-05-30. Kesalahan pengutipan: Tanda
<ref> tidak sah; nama "Oaks"
didefinisikan berulang dengan isi berbeda
13. ^ Stone 1973:4
14. ^ Stone secara sederhana
membutuhkan "harus berhenti dalam
sejumlah langkah" (Stone 1973:7-8).
15. ^ Boolos and Jeffrey 1974, 1999:19
16. ^ cf Stone 1972:5
17. ^ Knuth 1973:7 menyatakan: "Pada
praktiknya kita tidak hanya menginginkan
algoritme, kita menginginkan algoritam
yang baik ... salah satu kriteria dari
kebaikannya adalah lama waktu yang
digunakan untuk menjalankan algoritme ...
kriteria lainnya adalah kemampuan
adaptasi dari algoritme ke komputer,
kesederhanaan dan elegan, dll."
18. ^ cf Stone 1973:6
19. ^ Stone 1973:7-8 menyatakan bahwa
harus ada, "... sebuah prosedur yang robot
[yaitu komputer] bisa ikuti supaya dapat
menentukan secara tepat bagaimana
mengikuti instruksi tersebut." Stone
menambahkan keterbatasan dari proses,
dan kepastian (tidak memiliki kerancuan
pada instruksi) pada definisi tersebut.
20. ^ Knuth, loc. cit
21. ^ Minsky 1967:105
22. ^ Gurevich 2000:1, 3
23. ^ Sipser 2006:157
24. ^ Knuth 1973:7
25. ^ Chaitin 2005:32
26. ^ Rogers 1987:1-2
27. ^ Dalam esainya "Calculations by Man
and Machine: Conceptual Analysis" Seig
2002:390 memuji perbedaan ini oleh
Robin Gandy, cf Wilfred Seig, dll., 2002
Reflections on the foundations of
mathematics: Essays in honor of Solomon
Feferman, Association for Symbolic Logic,
A. K Peters Ltd, Natick, MA.
28. ^ cf gandy 1980:126, robin gandy
church's thesis and principles for
mechanisms appearing on pp. 123–148 in
j. barwise et al. 1980 the kleene
symposium, north-holland publishing
company.
29. ^ Sebuah "robot": "Sebuah komputer
adalah sebuah robot yang melakukan
setiap tugas yang dapat dijelaskan
sebagai urutan dari instruksi." cf Stone
1972:3
30. ^ "abacus"-nya Lambek adalah
"sejumlah lokasi tak terbatas yang bisa
dihitung (lubang, kabel, dll.) berikut
dengan persediaan penghitung yang tak
terbatas (kerikil, remah roti, dll). Lokasinya
bisa dibedakan, penghitungnya tidak".
Lubangnya memiliki kapasitas tak
terbatas, dan digerakan oleh agen yang
memahami dan mampu menjalankan
sejumlah instruksi" (Lambek 1961:295).
Lambek mengacu Melzak yang
mendefinisikan mesin-Q nya sebagai
"sejumlah lokasi yang besar tanpa batas ...
persediaan penghitung yang tanpa batas
yang terdistribusi di antara lokasi-lokasi
tersebut, sebuah program, dan sebuah
operator yang tujuan satu-satunya yaitu
menjalankan program." (Melzak
1961:283). B-B-J (loc. cit.) menambahkan
syarat bahwa lubang tersebut "mampu
menyimpan sejumlah batu" (p. 46). Melzak
dan Lambek muncul di The Canadian
Mathematical Bulletin, vol. 4, no. 3,
September 1961.
31. ^ Jika tidak ada kebingungan yang
dihasilkan, kata "penghitung" bisa
dihiraukan, dan sebuah lokasi bisa
dikatakan mengandung sebuah "angka".
32. ^ "Kita mengatakan bahwa instruksi
adalah efektif bila ada sebuah prosedur
yang robot dapat ikuti supaya dapat
menentukan secara tepat bagaimana
mematuhi instruksi." (Stone 1972:6)
33. ^ cf Minsky 1967: Chapter 11
"Computer models" and Chapter 14 "Very
Simple Bases for Computability" pp. 255–
281 in particular
34. ^ cf Knuth 1973:3.
35. ^ Tapi selalu diikuti oleh IF-THEN untuk
menghindari pengurangan yang tidak
sesuai.
36. ^ Namun, beberapa instruksi
penetapan berbeda (misalnya,
DECREMENT, INCREMENT, dan
ZERO/CLEAR/EMPTY untuk mesin
Minsky) juga dibutuhkan untuk
kekomplitan-Turing; spesifikasi
lengkapnya tergantung kepada perancang.
GOTO tak bersyarat cukup mudah; ia
dapat dibentuk dengan menginisialisasi
suatu lokasi tertentu dengan nol,
misalnya, instruksi "Z ← 0"; oleh karena itu
instruksi IF Z=0 THEN GOTO xxx adalah
tak bersyarat.
37. ^ Knuth 1973:4
38. ^ Strone 1972:5. Metode untuk
mendapatkan akar tidaklah biasa: lihat
Metode untuk menghitung akar kuadrat.
39. ^ Leeuwen, Jan (1990). Handbook of
Theoretical Computer Science: Algorithms
and complexity. Volume A . Elsevier.
hlm. 85. ISBN 978-0-444-88071-0.
40. ^ John G. Kemeny and Thomas E.
Kurtz 1985 Back to Basic: The History,
Corruption, and Future of the Language,
Addison-Wesley Publishing Company, Inc.
Reading, MA, ISBN 0-201-13433-0.
41. ^ Tausworthe 1977:101
42. ^ Tausworthe 1977:142
43. ^ Knuth 1973 bagian 1.2.1,
dikembangkan oleh Tausworthe 1977 di
halaman 100ff dan Bab 9.1
44. ^ cf Tausworthe 1977
45. ^ Heath 1908:300; Hawking's Dover
2005 edisi diambil dari Heath.
46. ^ "'Biarkan CD, mengukur BF,
meninggalkan FA kurang darinya.' Hal ini
merupakan singkatan cerdik untuk
mengatakan, ukur pada BA panjang yang
sama dengan CD sampai titik F sehingga
sisa panjang FA kurang dari CD; dengan
kata lain, misalkan BF adalah yang
kelipatan terbesar dari CD yang terdapat
dalam BA" (Heath 1908:297)
47. ^ Untuk percobaan moden
menggunakan pembagian dalam
algoritme lihat Hardy dan Wright
1979:180, Knuth 1973:2 (Volume 1),
ditambah diskusi tentang algoritme Euclid
dalam Knuth 1969:293-297 (Volume 2).
48. ^ Euclid mengungkapkan pertanyaan
ini dalam Proposisi 1 nya.
49. ^ "Euclid's Elements, Book VII,
Proposition 2" . Aleph0.clarku.edu.
Diakses tanggal May 20, 2012.
50. ^ Knuth 1973:13-18. Dia memuji
"formulasi pembuktian-algoritme dalam
makan asersi dan induksi" kepada R. W.
Floyd, Peter Naur, C. A. R. Hoare, H. H.
Goldstine dan J. von Neumann. Tausworth
1977 meminjam contoh Euclid Knuth dan
mengembangkan metode Knuth di bab 9.1
dari Formal Proofs (pages 288–298).
51. ^ Tausworthe 1997:294
52. ^ cf Knuth 1973:7 (Vol. I), and his
more-detailed analyses on pp. 1969:294-
313 (Vol II).
53. ^ Kesalahan terjadi saat sebuah
algoritme mencoba memadatkan dirinya
sendiri. Keberhasilan akan memecahkan
permasalahan perhentian.
54. ^ Gillian Conahan (January 2013).
"Better Math Makes Faster Data
Networks" . discovermagazine.com.
55. ^ Haitham Hassanieh, Piotr Indyk, Dina
Katabi, and Eric Price , "ACM-SIAM
Symposium On Discrete Algorithms
(SODA) , Kyoto, January 2012. Lihat juga
sFFT Web Page .
56. ^ Kowalski 1979
57. ^ Carroll, Sue; Daughtrey, Taz (July 4,
2007). Fundamental Concepts for the
Software Quality Engineer . American
Society for Quality. hlm. 282 et seq.
ISBN 978-0-87389-720-4.
58. ^ Misalnya, volume dari suatu politop
kompleks (dijelaskan menggunakan
sebuah keanggotaan oracle) dapat
diperkirakan sampai keakuratan yang
tinggi dengan mengacak algoritme waktu
polinomial, bukan dengan deterministik;
lihat Dyer, Martin; Frieze, Alan; Kannan,
Ravi (January 1991), "A Random
Polynomial-time Algorithm for
Approximating the Volume of Convex
Bodies", J. ACM, New York, NY, USA: ACM,
38 (1): 1–17,
doi:10.1145/102782.102783 .
59. ^ George B. Dantzig and Mukund N.
Thapa. 2003. Linear Programming 2:
Theory and Extensions. Springer-Verlag.
60. ^ Tsypkin (1971). Adaptation and
learning in automatic systems . Academic
Press. hlm. 54. ISBN 978-0-08-095582-7.
61. ^ Brezina, Corona (2006). Al-
Khwarizmi: The Inventor Of Algebra . The
Rosen Publishing Group. ISBN 978-1-4042-
0513-0.
62. ^ Foremost mathematical texts in
history , according to Carl B. Boyer.
63. ^ Etymology of algorithm at
Dictionary.Reference.com
64. ^ Becker O (1933). "Eudoxus-Studien I.
Eine voreuklidische Proportionslehre und
ihre Spuren bei Aristoteles und Euklid".
Quellen und Studien zur Geschichte der
Mathematik B 2: 311–333.
65. ^ "History of Algorithms and
Algorithmics" . Scriptol.com. Diakses
tanggal November 7, 2012.
66. ^ Davis 2000:18
67. ^ Bolter 1984:24
68. ^ Bolder 1984:26
69. ^ Bolter 1984:33–34, 204–206.
70. ^ All quotes from W. Stanley Jevons
1880 Elementary Lessons in Logic:
Deductive and Inductive, Macmillan and
Co., London and New York. Republished
as a googlebook; cf Jevons 1880:199–
201. Louis Couturat 1914 the Algebra of
Logic, The Open Court Publishing
Company, Chicago and London.
Republished as a googlebook; cf Couturat
1914:75–76 gives a few more details;
interestingly he compares this to a
typewriter as well as a piano. Jevons
states that the account is to be found at
Jan . 20, 1870 The Proceedings of the
Royal Society.
71. ^ Bell and Newell diagram 1971:39, cf.
Davis 2000
72. ^ * Melina Hill, Valley News
Correspondent, A Tinkerer Gets a Place in
History, Valley News West Lebanon NH,
Thursday March 31, 1983, page 13.
73. ^ Davis 2000:14
74. ^ van Heijenoort 1967:81ff
75. ^ van Heijenoort's commentary on
Frege's Begriffsschrift, a formula
language, modeled upon that of
arithmetic, for pure thought in van
Heijenoort 1967:1
76. ^ Dixon 1906, cf. Kleene 1952:36–40
77. ^ cf. footnote in Alonzo Church 1936a
in Davis 1965:90 and 1936b in Davis
1965:110
78. ^ Kleene 1935–6 in Davis 1965:237ff,
Kleene 1943 in Davis 1965:255ff
79. ^ Church 1936 in Davis 1965:88ff
80. ^ cf. "Formulation I", Post 1936 in
Davis 1965:289–290
81. ^ Turing 1936–7 in Davis 1965:116ff
82. ^ Rosser 1939 in Davis 1965:226
83. ^ Kleene 1943 in Davis 1965:273–274
84. ^ Kleene 1952:300, 317
85. ^ Kleene 1952:376
86. ^ Turing 1936–7 in Davis 1965:289–
290
87. ^ Turing 1936 in Davis 1965, Turing
1939 in Davis 1965:160
88. ^ Hodges, p. 96
89. ^ Turing 1936–7:116
90. ^ a b Turing 1936–7 in Davis 1965:136
91. ^ Turing 1939 in Davis 1965:160
Bacaan lanjutan
Axt, P. (1959) On a Subrecursive Hierarchy
and Primitive Recursive Degrees,
Transactions of the American Mathematical
Society 92, pp. 85–105
Bell, C. Gordon and Newell, Allen (1971),
Computer Structures: Readings and
Examples, McGraw-Hill Book Company,
New York. ISBN 0-07-004357-4.
Bellah, Robert Neelly (1985). Habits of the
Heart: Individualism and Commitment in
American Life . Berkeley: University of
California Press. ISBN 978-0-520-25419-0.
Blass, Andreas; Gurevich, Yuri (2003).
"Algorithms: A Quest for Absolute
Definitions" (PDF). Bulletin of European
Association for Theoretical Computer
Science. 81. Includes an excellent
bibliography of 56 references.
Boolos, George; Jeffrey, Richard (1974,
1999). Computability and Logic (edisi ke-
4th). Cambridge University Press, London.
ISBN 0-521-20402-X. : cf. Chapter 3 Turing
machines where they discuss "certain
enumerable sets not effectively
(mechanically) enumerable".
Burgin, Mark (2004). Super-Recursive
Algorithms. Springer. ISBN 978-0-387-
95569-8.
Campagnolo, M.L., Moore, C., and Costa,
J.F. (2000) An analog characterization of
the subrecursive functions. In Proc. of the
4th Conference on Real Numbers and
Computers, Odense University, pp. 91–109
Church, Alonzo (1936a). "An Unsolvable
Problem of Elementary Number Theory".
The American Journal of Mathematics. 58
(2): 345–363. doi:10.2307/2371045 .
JSTOR 2371045 . Reprinted in The
Undecidable, p. 89ff. The first expression of
"Church's Thesis". See in particular page
100 (The Undecidable) where he defines the
notion of "effective calculability" in terms of
"an algorithm", and he uses the word
"terminates", etc.
Pranala luar
Lihat informasi mengenai
algoritme di Wiktionary.
Diperoleh dari
"https://id.wikipedia.org/w/index.php?
title=Algoritme&oldid=14843771"