Algoritma: Perbedaan antara revisi

Konten dihapus Konten ditambahkan
Maulana.AN (bicara | kontrib)
k Membalikkan revisi 21647393 oleh Cahyogunadi (bicara)
Tag: Pembatalan halaman dengan galat kutipan
Tidak ada ringkasan suntingan
Baris 1:
[[Berkas:Euclid flowchart 1.png |jmpl|lright | [[Diagram alur]] dari sebuah algoritme ([[Algoritme Euclid]]) untuk menghitung faktor persekutuan terbesar (f.p.b.) dari dua angka ''a'' dan ''b'' dalam lokasi bernama A dan B. Algoritme dijalankan dengan pengurangan berturut-turut dalam dua pengulangan: JIKA pengujian B >= A menghasilkan "ya" (atau benar) (lebih akuratnya ''angka'' ''b'' dalam lokasi B lebih besar atau sama dengan ''angka'' ''a'' dalam lokasi A) MAKA, algoritme menentukan B ← B - A (artinya angka ''b'' - ''a'' menggantikan ''b'' sebelumnya). Hal yang sama, JIKA A > B, MAKA A ← A - B. Proses tersebut berhenti saat (isi dari) B adalah 0, menghasilkan f.p.k. dalam A. (Algoritme tersebut diambil dari Scott 2009:13; simbol dan gaya penggambaran dari Tausworthe 1977).]]
 
Dalam [[matematika]] dan [[ilmu komputer]], '''algoritma''' (/ˈælɡərɪðəm/ ( simak)) adalah rangkaian terhingga dari instruksi-instruksi yang rumit, yang biasanya digunakan untuk menyelesaikan atau menjalankan suatu kelompok masalah [[komputasi]] tertentu. Algoritma digunakan sebagai spesifikasi untuk melakukan perhitungan dan pemrosesan data. Algoritma yang lebih mutakhir dapat melakukan deduksi otomatis (disebut sebagai penalaran otomatis) dan menggunakan tes matematis dan logis untuk mengarahkan eksekusi kode melalui berbagai rute (disebut sebagai pengambilan keputusan otomatis). Penggunaan karakteristik manusia sebagai deskriptor mesin secara metaforis telah dipraktekkan oleh [[Alan Turing]] dengan terminologi seperti "memori", "pencarian" dan "stimulus".<ref>Blair, Ann, Duguid, Paul, Goeing, Anja-Silvia and Grafton, Anthony. Information: A Historical Companion, Princeton: Princeton University Press, 2021. p. 247</ref>
'''Algoritma''' adalah sekumpulan instruksi yang terstruktur dan terbatas yang diimplementasikan kedalam bentuk program komputer untuk menyelesaikan suatu masalah komputasi tertentu.<ref>{{cite book|last=Mushthofa|first=|date=2021|url=http://setditjen.dikdasmen.kemdikbud.go.id/eppa/unggah/unduhan/INFORMATIKA-BS-KLS_X/pdf|title=Informatika untuk SMA Kelas X|place=[[Jakarta]]|publisher=Pusat Kurikulum dan Perbukuan|isbn=978-602-244-506-7|edition=|pages=245|language=|url-status=live|coauthors=}}</ref> Dalam [[matematika]] dan [[ilmu komputer]], algoritme adalah prosedur langkah-demi-langkah untuk penghitungan.
Algoritme digunakan untuk [[penghitungan]], [[pemrosesan data]], dan [[penalaran otomatis]].
 
Sebaliknya, [[heuristika]] adalah pendekatan untuk pemecahan masalah komputasi yang mungkin tidak sepenuhnya terspesifikasi atau tidak menjamin hasil yang benar atau optimal, terutama dalam ranah masalah komputasi yang mana tidak ada hasil yang benar atau optimal yang terdefinisi dengan baik.<ref>David A. Grossman, Ophir Frieder, ''Information Retrieval: Algorithms and Heuristics'', 2nd edition, 2004, {{isbn|1402030045}}</ref>
Algoritme adalah [[metode efektif]] diekspresikan sebagai rangkaian [[terbatas]]<ref>
"Setiap algoritme klasik, misalnya, bisa dijelaskan dengan sejumlah kata bahasa Inggris yang terbatas"
(Rogers 1987:2).
</ref>
dari instruksi-instruksi yang telah didefinisikan dengan baik<ref>
Telah didefinisikan terhadap agen yang menjalankan algoritme tersebut: "Ada agen komputasi, biasanya manusia, yang bisa beraksi terhadap instruksi dan melakukan komputasi"
(Rogers 1987:2).
</ref>
untuk menghitung sebuah [[Fungsi (matematika)|fungsi]].<ref>
"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).
</ref>
Dimulai dari sebuah kondisi awal dan input awal (mungkin [[deretan null|kosong]]),<ref>
Sebuah algoritme memiliki input [[nol]] atau lebih, yaitu, [[kuantitas]] yang diberikan padanya sejak awal sebelum algoritme dijalankan"
(Knuth 1973:5).
</ref>
instruksi-instruksi tersebut menjelaskan sebuah [[komputasi]] yang, bila [[Eksekusi (komputasi)|dieksekusi]], diproses lewat sejumlah urutan kondisi terbatas<ref>
"Sebuah prosedur yang memiliki semua karakteristik dari sebuah algoritme kecuali prosedur yang tidak memiliki keterbatasan bisa disebut sebagai sebuah 'metode komputasi'"
(Knuth 1973:5).
</ref>
yang terdefinisi dengan baik, yang pada akhirnya menghasilkan "keluaran"<ref>
"Sebuah algoritme memiliki satu atau lebih keluaran, yaitu kuantitas yang memiliki relasi tertentu terhadap masukan"
(Knuth 1973:5).
</ref>
dan berhenti di kondisi akhir.
Transisi dari satu kondisi ke kondisi selanjutnya tidak harus [[deterministik]];
beberapa algoritme, dikenal dengan [[algoritme pengacakan]], menggunakan masukan acak.<ref>
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
</ref>
 
Sebagai metode yang efektif, algoritma dapat diekspresikan dalam jumlah ruang dan waktu yang terbatas,<ref>"Any classical mathematical algorithm, for example, can be described in a finite number of English words" (Rogers 1987:2).</ref> dan dalam bahasa formal yang terdefinisi dengan baik<ref>Well defined with respect to the agent that executes the algorithm: "There is a computing agent, usually human, which can react to the instructions and carry out the computations" (Rogers 1987:2).</ref> untuk menghitung suatu [[Fungsi (matematika)|fungsi]].<ref>"an algorithm is a procedure for computing a ''function'' (with respect to some chosen notation for integers) ... this limitation (to numerical functions) results in no loss of generality", (Rogers 1987:1).</ref> Dimulai dari tataran awal dan input awal (bisa jadi kosong),<ref>"An algorithm has [[zero]] or more inputs, i.e., [[Quantity|quantities]] which are given to it initially before the algorithm begins" (Knuth 1973:5).</ref> instruksi-instruksi yang ada menggambarkan sebuah komputasi yang, ketika dieksekusi, berjalan melalui sejumlah tataran dengan jumlah terhingga yang terdefinisi dengan baik,<ref>"A procedure which has all the characteristics of an algorithm except that it possibly lacks finiteness may be called a 'computational method{{'"}} (Knuth 1973:5).</ref> yang pada akhirnya menghasilkan "output"<ref>"An algorithm has one or more outputs, i.e. quantities which have a specified relation to the inputs" (Knuth 1973:5).</ref> dan berakhir pada tataran final akhir. Transisi dari satu tataran ke tataran berikutnya tidak selalu bersifat menentukan; beberapa algoritme, yang dikenal sebagai algoritme acak, menggabungkan input acak.<ref>Whether or not a process with random interior processes (not including the input) is an algorithm is debatable. Rogers opines that: "a computation is carried out in a discrete stepwise fashion, without the use of continuous methods or analogue devices ... carried forward deterministically, without resort to random methods or devices, e.g., dice" (Rogers 1987:2).</ref>
Walaupun ''[[algorism]]''-nya [[al-Khawarizmi]] dirujuk sebagai aturan-aturan melakukan aritmetika menggunakan [[bilangan Hindu-Arab]] dan solusi sistematis dan [[persamaan kuadrat]], sebagian formalisasi yang nantinya menjadi ''algoritme'' modern dimulai dengan usaha untuk memecahkan [[permasalahan keputusan]] (''Entscheidungsproblem'') yang diajukan oleh [[David Hilbert]] pada tahun 1928.
Formalisasi selanjutnya dilihat sebagai usaha untuk menentukan "[[penghitungan efektif]]"
<ref>
Kleene 1943 dalam Davis 1965:274
</ref>
atau "metode efektif";
<ref>
Rosser 1939 dalam Davis 1965:225
</ref>
formalisasi tersebut mengikutkan [[Kurt Godel|Godel]]-[[Jacques Herbrand|Herbrand]]-[[Stephen Cole Kleene|Kleene]] [[Rekursi (ilmu komputer)|fungsi rekursif]]-nya [[Kurt Godel]] - [[Jacques Herbrand]] - [[Stephen Cole Kleene]] pada tahun 1930, 1934, dan 1935, [[kalkulus lambda]]-nya [[Alonzo Church]] pada tahun 1936, "[[Formulasi 1]]"-nya [[Emil Post]] pada tahun 1936, dan [[Mesin Turing]]-nya [[Alan Turing]] pada tahun 1936-7 dan 1939.
Dari definisi formal dari algoritme di atas, berkaitan dengan konsep intuituf, masih tetap ada masalah yang menantang.
<ref>{{cite book
|last1 = Moschovakis
|first1 = Yiannis N.
|editor1-last = Engquist
|editor1-first = B.
|editor2-last = Schmid
|editor2-first = W.
|title = Mathematics Unlimited — 2001 and beyond
|url = http://citeseer.ist.psu.edu/viewdoc/summary?doi=10.1.1.32.8093
|year = 2001
|publisher = Springer
|isbn = 9783540669135
|pages = 919–936 (Part II)
|chapter = What is an algorithm?
}}</ref>
apa itu algoritma?
 
== Asal kataSejarah ==
Konsep algoritma telah ada sejak jaman prasejarah. Algoritma [[Aritmetika|aritmatika]], seperti algoritma divisi, digunakan oleh matematikawan [[Babilonia (kota kuno)|Babilonia]] kuno sekitar tahun 2500 [[SM]] dan matematikawan [[Mesir Kuno|Mesir]] sekitar tahun 1550 SM. Matematikawan [[Yunani Kuno|Yunani]] kemudian juga menggunakan algoritma pada 240 SM sebagaimana yang terdapat pada analisis [[Eratosthenes]] untuk menemukan bilangan prima, dan [[Algoritme Euklides|Algoritma Euklides]] untuk menemukan pembagi persekutuan terbesar dari dua bilangan.<ref name="Cooke2005">{{cite book|last=Cooke|first=Roger L.|date=2005|title=The History of Mathematics: A Brief Course|publisher=John Wiley & Sons|isbn=978-1-118-46029-0}}</ref> Matematikawan Arab seperti [[al-Kindi]] pada abad ke-9 menggunakan algoritma kriptografi untuk pemecahan kode, berdasarkan analisis frekuensi.
 
Kata algoritma berasal dari nama matematikawan [[Persia]] abad ke-9, [[Muḥammad bin Mūsā al-Khawārizmī|Muḥammad bin Mūsā al-Khwārizmī]], yang [[nisbah]]-nya (yang mengidentifikasikannya sebagai seseorang yang berasal dari [[Khwarezmia]]) dilatinkan sebagai Algoritmi (bahasa Persia yang diarabkan الخوارزمی sekitar: 780-850).<ref>{{cite web|title=Al-Khwarizmi biography|url=http://www-history.mcs.st-andrews.ac.uk/Biographies/Al-Khwarizmi.html|website=www-history.mcs.st-andrews.ac.uk|archive-url=https://web.archive.org/web/20190802091553/http://www-history.mcs.st-andrews.ac.uk/Biographies/Al-Khwarizmi.html|archive-date=August 2, 2019|access-date=May 3, 2017|url-status=live}}</ref><ref>{{cite web|title=Etymology of algorithm|url=http://chambers.co.uk/search/?query=algorithm&title=21st|website=Chambers Dictionary|archive-url=https://web.archive.org/web/20190331204600/https://chambers.co.uk/search/?query=algorithm&title=21st|archive-date=March 31, 2019|access-date=December 13, 2016|url-status=live}}</ref> Namanya bermakna 'yang berasal dari (daerah) [[Khwarezmia]]', sebuah daerah yang dulunya merupakan bagian dari [[Iran Raya]] dan sekarang sebagai bagian dari [[Uzbekistan]].<ref name="Hogendijk2">{{cite journal|last=Hogendijk|first=Jan P.|year=1998|title=al-Khwarzimi|url=http://www.kennislink.nl/web/show?id=116543|journal=Pythagoras|volume=38|issue=2|pages=4–5|archive-url=https://web.archive.org/web/20090412193516/http://www.kennislink.nl/web/show?id=116543|archive-date=April 12, 2009|url-status=dead}}</ref><ref name="Oaks2">{{cite web|last=Oaks|first=Jeffrey A.|title=Was al-Khwarizmi an applied algebraist?|url=http://facstaff.uindy.edu/~oaks/MHMC.htm|publisher=[[University of Indianapolis]]|archive-url=https://web.archive.org/web/20110718094835/http://facstaff.uindy.edu/~oaks/MHMC.htm|archive-date=July 18, 2011|access-date=May 30, 2008|url-status=dead|df=mdy-all}}</ref>Sekitar tahun 825, Al-Khwarizmi menulis sebuah risalah [[Bahasa Arab|berbahasa Arab]] tentang [[sistem angka Hindu-Arab]], yang diterjemahkan ke dalam [[bahasa Latin]] selama abad ke-12. Naskah ini dimulai dengan frasa Dixit Algorizmi ('Maka berkatalah Al-Khwarizmi'), di mana "Algorizmi" di sini adalah [[Latinisasi]] penerjemah akan nama Al-Khwarizmi.<ref>{{cite book|last=Brezina|first=Corona|year=2006|url=https://books.google.com/books?id=955jPgAACAAJ|title=Al-Khwarizmi: The Inventor Of Algebra|publisher=The Rosen Publishing Group|isbn=978-1-4042-0513-0}}</ref> Bukunya yang bernama Aljabar menjadi salah satu buku matematikawan yang paling banyak dibaca di Eropa pada abad pertengahan.<ref>[http://www-history.mcs.st-and.ac.uk/Extras/Boyer_Foremost_Text.html Foremost mathematical texts in history] {{Webarchive|url=https://web.archive.org/web/20110609224820/http://www-history.mcs.st-and.ac.uk/Extras/Boyer_Foremost_Text.html|date=June 9, 2011}}, according to [[Carl B. Boyer]].</ref> Dalam bahasa Latin abad pertengahan, kata ''algorismus,'' yang merupakan pengadaptasian dari namanya, menjadi kata yang bermakna "sistem bilangan desimal".<ref>{{Citation|title=algorismic|url=https://www.thefreedictionary.com/algorismic|work=The Free Dictionary|access-date=2019-11-14|archive-url=https://web.archive.org/web/20191221200124/https://www.thefreedictionary.com/algorismic|archive-date=December 21, 2019|url-status=live}}</ref> Pada abad ke-15, di bawah pengaruh kata Yunani ἀριθμός (arithmos), 'angka' (lih. 'aritmatika'), kata Latin-nya diubah menjadi algorithmus.<ref>''[[Oxford English Dictionary]]'', Third Edition, 2012 [http://www.oed.com/view/Entry/4959 ''s.v.'']</ref> Dalam bahasa Inggris, kata algorithm pertama kali digunakan pada sekitar tahun 1230 dan kemudian oleh [[Geoffrey Chaucer|Chaucer]] pada 1391. Bahasa Inggris mengadopsi istilah dari bahasa Prancis, akan tetapi tidak sampai pada abad ke-19 kata "algorithm" mengambil makna yang ada sekarang pada bahasa Inggris modern.<ref>{{Cite journal|last=Mehri|first=Bahman|date=2017|title=From Al-Khwarizmi to Algorithm|journal=Olympiads in Informatics|volume=11|issue=2|pages=71–74|doi=10.15388/ioi.2017.special.11}}</ref>
'Algoritme' muncul dari 'Algoritmi', bentuk Latin dari ''al-Khwārizmī'' yang diambil dari nama [[Muḥammad bin Mūsā al-Khawārizmī|Muḥammad ibn Mūsā al-Khwārizmī]] (''780–850M)'' seorang [[Matematikawan islam|matematikawan]], [[Astronomi islam|ahli astronomi]], dan [[Ahli geografi islam|ahli geografi]] dari [[orang Persia|Persia.]]<ref name="Hogendijk">{{cite journal
 
|first=Jan P.
Matematika [[India]] pada awalnya sebagian besar berbentuk algoritmik. Algoritma yang mewakili tradisi matematika India berkisar dari Śhulba Sūtrā dari beberapa abad sebelum masehi hingga teks-teks abad pertengahan dari Sekolah Kerala akan Astronomi dan Matematika.<ref>{{cite book|last1=Sriram|first1=M. S.|date=2005|title=Contributions to the History of Indian Mathematics|publisher=Springer|isbn=978-93-86279-25-5|editor1-last=Emch|editor1-first=Gerard G.|page=153|language=en|chapter=Algorithms in Indian Mathematics|editor2-last=Sridharan|editor2-first=R.|editor3-last=Srinivas|editor3-first=M. D.|chapter-url=https://books.google.com/books?id=qfJdDwAAQBAJ&pg=PA153}}</ref>
|last=Hogendijk
 
|title=al-Khwarzimi
Pemakaian awal lainnya dari kata ini berasal dari tahun 1240, dalam sebuah manual berjudul Carmen de Algorismo yang disusun oleh Alexandre de Villedieu. Yang kalimatnya diawali dengan:
|journal=Pythagoras
 
|volume=38
{{blockquote|''Haec algorismus ars praesens dicitur, in qua / Talibus Indorum fruimur bis quinque figuris.''}}
|issue=2
 
|year=1998
yang bermakna:
|pages=4–5
 
|url=http://www.kennislink.nl/web/show?id=116543
{{blockquote|Algorisme adalah ilmu yang saat ini kita gunakan untuk menghitung dengan angka-angka India, yang jumlahnya ada dua kali lima (sepuluh).}}
|format=
 
|ref=harv
Puisi ini panjangnya beberapa ratus baris dan merangkum ilmu menghitung dengan angka-angka yang diadopsi dari [[India]].<ref>{{Cite web|title=Abu Jafar Muhammad ibn Musa al-Khwarizmi|url=http://members.peak.org/~jeremy/calculators/alKwarizmi.html|website=members.peak.org|archive-url=https://web.archive.org/web/20190821232118/http://members.peak.org/~jeremy/calculators/alKwarizmi.html|archive-date=August 21, 2019|access-date=2019-11-14|url-status=live}}</ref>
|issn=0033–4766
 
|access-date=2014-08-28
Formalisasi parsial dari konsep algoritma modern dimulai dengan upaya untuk memecahkan ''Entscheidungsproblem'' (masalah pengambilan keputusan) yang diajukan oleh [[David Hilbert]] pada tahun 1928. Formalisasi selanjutnya dibingkai sebagai upaya untuk mendefinisikan "kalkulabilitas efektif"<ref>Kleene 1943 in Davis 1965:274</ref> atau "metode efektif".<ref>Rosser 1939 in Davis 1965:225</ref> Formalisasi tersebut termasuk fungsi rekursif [[Kurt Gödel|Gödel]]-Herbrand-Kleene pada tahun 1930, 1934 dan 1935, kalkulus lambda Alonzo Church pada tahun 1936, Formulasi 1 Emil Post pada tahun 1936, dan [[mesin Turing]]-nya [[Alan Turing]] pada tahun 1936-37 dan 1939.
|archive-date=2008-03-19
|archive-url=https://web.archive.org/web/20080319024147/http://www.kennislink.nl/web/show?id=116543
|dead-url=yes
}}</ref><ref name="Oaks">{{cite web
|first=Jeffrey A.
|last=Oaks
|url=http://facstaff.uindy.edu/~oaks/MHMC.htm
|title=Was al-Khwarizmi an applied algebraist?
|publisher=[[University of Indianapolis]]
|accessdate=2008-05-30
|archive-date=2010-11-15
|archive-url=https://www.webcitation.org/5uGLbfttF?url=http://facstaff.uindy.edu/~oaks/MHMC.htm
|dead-url=yes
}}</ref>
 
== Definisi informal ==
Baris 734 ⟶ 665:
 
Kata ''"Algoritme"'', atau ''"[[Algorisma]]"'' pada versi penulisan lain, datang dari nama [[al-Khwarizmi]]. dieja dalam Arab klasik sebagai Al-Khwarithmi. Al-khwarizmi ({{lang-fa|خوارزمي}}, 780-850) adalah [[matematikawan]], [[ahli astronomi]], [[ahli geografi]] dari [[orang Persia|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]].
<ref name="Hogendijk">{{cite journal|last=Hogendijk|first=Jan P.|year=1998|title=al-Khwarzimi|url=http://www.kennislink.nl/web/show?id=116543|dead-url=yes|format=|journal=Pythagoras|volume=38|issue=2|pages=4–5|issn=0033–4766|archive-url=https://web.archive.org/web/20080319024147/http://www.kennislink.nl/web/show?id=116543|archive-date=2008-03-19|access-date=2014-08-28|ref=harv}}</ref>
<ref name="Hogendijk">{{cite journal
<ref name="Oaks">{{cite web|last=Oaks|first=Jeffrey A.|title=Was al-Khwarizmi an applied algebraist?|url=http://facstaff.uindy.edu/~oaks/MHMC.htm|publisher=[[University of Indianapolis]]|archive-url=https://www.webcitation.org/5uGLbfttF?url=http://facstaff.uindy.edu/~oaks/MHMC.htm|archive-date=2010-11-15|dead-url=yes|accessdate=2008-05-30}}</ref>
|first=Jan P.
|last=Hogendijk
|title=al-Khwarzimi
|journal=Pythagoras
|volume=38
|issue=2
|year=1998
|pages=4–5
|url=http://www.kennislink.nl/web/show?id=116543
|ref=harv}}
{{Dead link |date=March 2010
}}</ref>
<ref name="Oaks">{{cite web
|first=Jeffrey A.
|last= Oaks
|url=http://facstaff.uindy.edu/~oaks/MHMC.htm
|title=Was al-Khwarizmi an applied algebraist?
|publisher=[[University of Indianapolis]]
|accessdate=May 30, 2008
}}</ref>
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.