Algoritma pencarian biner

Sebuah algoritme pencarian biner (atau pemilahan biner) adalah sebuah teknik untuk menemukan nilai tertentu dalam sebuah larik (array) linear, dengan menghilangkan setengah data pada setiap langkah, dipakai secara luas tetapi tidak secara ekslusif dalam ilmu komputer. Sebuah pencarian biner mencari nilai tengah (median), melakukan sebuah pembandingan untuk menentukan apakah nilai yang dicari ada sebelum atau sesudahnya, kemudian mencari setengah sisanya dengan cara yang sama. Sebuah pencarian biner adalah salah satu contoh dari algoritme divide and conquer (atau lebih khusus algoritme decrease and conquer) dan sebuah pencarian dikotomi (lebih rinci di Algoritme pencarian).

Algoritme

Penerapan terbanyak dari pencarian biner adalah untuk mencari sebuah nilai tertentu dalam sebuah list terurut. Jika dibayangkan, pencarian biner dapat dilihat sebagai sebuah permainan tebak-tebakan, kita menebak sebuah bilangan, atau nomor tempat, dari daftar (list) nilai.

Pencarian diawali dengan memeriksa nilai yang ada pada posisi tengah list; oleh karena nilai-nilainya terurut, kita mengetahui apakah nilai terletak sebelum atau sesudah nilai yang di tengah tersebut, dan pencarian selanjutnya dilakukan terhadap setengah bagian dengan cara yang sama. Berikut ini adalah pseudocode sederhana yang menentukan indeks (posisi) dari nilai yang diberikan dalam sebuah list berurut, a berada antara left dan right:

function binarySearch(a, value, left, right)
    if right < left
        return not found
    mid:= floor((right-left)/2)+left
    if a[mid] = value
        return mid
    if value < a[mid]
        return binarySearch(a, value, left, mid-1)
    else
        return binarySearch(a, value, mid+1, right)

Karena pemanggilan fungsi di atas adalah rekursif ekor, fungsi tersebut dapat dituliskan sebagai sebuah pengulangan (loop), hasilnya adalah algoritme in-place:

function binarySearch(a, value, left, right)
    while left ≤ right
        mid:= floor((right-left)/2)+left
        if a[mid] = value
            return mid
        if value < a[mid]
            right:= mid-1
        else
            left:= mid+1
    return not found

Pada kedua kasus, algoritme akan berakhir karena paa setiap pemanggilan rekursif atau pengulangan, jangkauan indeks right dikurang left akan selalu mengecil, dan akhirnya pasti akan menjadi negatif.

Pencarian biner adalah sebuah algoritme logaritmik dan bekerja dalam waktu O(log n). Secara khusus, pengulangan yang diperlukan untuk menghasilkan jawaban. Hal ini dianggap lebih cepat dibandingkan sebuah pencarian linear. Pencarian biner dapat diimplementasikan dengan rekursi atau iterasi, seperti yang terlihat di atas, walaupun pada kebanyakan bahasa pemrograman akan lebih elegan bila dinyatakan secara rekursif.

Contoh

Sebuah contoh aksi pencarian biner adalah sebuah permainan tebak-tebakan dimana seorang pemain harus menebak sebuah bilangan bulat positif yang dipilih oleh pemain lain di antara 1 dan N, dengan memanfaatkan jawaban pertanyaan berupa ya dan tidak. Misalnya N adalah 16 dan angka yang dipilih adalah 11, permainan dapat berjalan sebagai berikut.

  • Apakah angka lebih besar dari 8? (Ya)
  • Apakah angka lebih besar dari 12? (Tidak)
  • Apakah angka lebih besar dari 10? (Ya)
  • Apakah angka lebih besar dari 11? (Tidak)

Sehingga, angka tersebut pasti 11. Pada setiap langkah, kita memilih sebuah angka yang tepat berada di tengah-tengah jangkauan nilai-nilai yang mungkin. Sebagai contoh, saat kita mengetahui angka tersebut lebih besar dari 8, tetapi lebih kecil atau sama dengan 12, kita mengetahui untuk memilih angka di tengah-tengah jangkauan [9, 12] (pada kasus ini 10 adalah yang optimal).

Paling banyak ada pertanyaan yang dibutuhkan untuk mendapatkan angka tersebut, karena setiap pertanyaan menghilangkan setengah dari ruang pencarian. Sebagai catatan bahwa dibutuhkan kurang dari satu pertanyaan (iterasi) untuk algoritme umum, karena angka tersebut dibatasi oleh sebuah jangkauan tertentu.

Walaupun angka yang kita tebak sangat banyak, pada kasus tidak ada batas atas N, kita masih dapat menemukan angka paling banyak dalam langkah (dimana k adalah angka yang dipilih (yang tidak diketahui)), caranya adalah dengan pertama-tama menemukan sebuah batas atas dengan melipatduakannya. Sebaai contoh, jika angka tersebut adalah 11, kita dapat menggunakan urutan tebakan sebagai berikut untuk menemukannya:

  • Apakah angka lebih besar dari 1? (Ya)
  • Apakah angka lebih besar dari 2? (Ya)
  • Apakah angka lebih besar dari 4? (Ya)
  • Apakah angka lebih besar dari 8? (Ya)
  • Apakah angka lebih besar dari 16? (Tidak, N=16, lakukan seperti di atas)

(Kita mengetahui angka tersebut lebih besar dari 8)

  • Apakah angka lebih besar dari 12? (Tidak)
  • Apakah angka lebih besar dari 10? (Ya)
  • Apakah angka lebih besar dari 11? (Tidak)

Satu penerapan sederhan, pada sistem kendali revisi, dimungkinkan memanfaatkan sebuah pencarian biner untuk melihat pada revisi mana sebuah cuplikan isi ditambahkan ke sebuah file. Dengan mudah kita lakukan sebuah pencarian biner terhadap seluruh history versi; jika isi tidak ada dalam suatu versi, suatu saat kemudian pasti akan muncul, dan jika ada pasti muncul di versi tersebut atau versi berikutnya. Cara ini lebih cepat dibandingkan dengan memeriksa setiap perbedaan antar versi.

Ada beberapa hal yang tidak terkait dengan komputer dimana sebuah pemilahan biner adalah cara tercepat untuk mengisolasi sebuah solusi yang dicari. Pada pemecahan sebuah permasalah dengan banyak kemungkinan penyebab, kita dapat mengubah setengah sangkaan, kita lihat apakah permasalahan masih terjadi dan tentukan bagian setengah berikutnya; ubah setengah sangkaan sisanya, dan seterusnya.

Contoh nyata lainnya: pada satu revisi di antara 500 revisi terakhir, sebuah paragraf penting terhapus dari sebuah artikel Wikipedia—pertanyaanya di revisi mana? Kita menghadapai paling banyak 500 opersi pembandingan, atau 9 pembandingan dengan pemilahan biner (2 pangkat 9, yaitu 512).


Penerapan pada teori kompleksitas

Seandainya kita tidak mengetahui sebuah jangkauan yang tetap tempat dari bilangan kberada, kita masih dapat menentukan nilainya dengan mengajukan pertanyaan ya/tidak dalam bentuk "Apakah k lebih besar dari x?" untuk beberapa bilangan x. Sebagai konsekuensi sederhana dari cara ini, jika kita dapat menjawab pertanyaan "Apakah nilai bilangan bulat k lebih besar dari nilai yang diberikan?" pada suatu waktu kemudian kita dapat menemukan nilai dari bilangan tersebut sama lamanya ditambah dengan faktor log k. Hal ini disebut sebuah reduksi, dan karena disebabkan reduksi ini maka kebanyakan teoris kompleksitas berkonsentrasi pada permasalahan keputusan, algoritme-algoritme yang mengasihlan jawaban sederhana berupa ya/tidak.

Sebagai contoh, anggap kita dapat menjawab "Apakah matriks n x n ini memiliki determinan lebih besar dari k?" dalam waktu O(n2). Kemudian, dengan memanfaatkan pencarian biner, kita dapat menemukan (batas atas) determinan tersebut dalam waktu O(n2log d), dimana d adalah determinan; sebagai catatan, d bukanlah ukuran dari masukan tetapi ukuran dari keluaran.

Lihat pula

Link-link luar

Referensi

  • Donald Knuth. The Art of Computer Programming, Volume 3: Sorting and Searching, Third Edition. Addison-Wesley, 1997. ISBN 0-201-89685-0. Section 6.2.1: Searching an Ordered Table, pp.409–426.
Baca informasi lainnya:

This article needs additional citations for verification. Please help improve this article by adding citations to reliable sources. Unsourced material may be challenged and removed.Find sources: Hector Pieterson Museum – news · newspapers · books · scholar · JSTOR (September 2023) (Learn how and when to remove this template message) Specialized museums in Soweto, South AfricaHector Pieterson MuseumEstablished2002; 22 years ago (2002)Loca…

Artikel ini berisi konten yang ditulis dengan gaya sebuah iklan. Bantulah memperbaiki artikel ini dengan menghapus konten yang dianggap sebagai spam dan pranala luar yang tidak sesuai, dan tambahkan konten ensiklopedis yang ditulis dari sudut pandang netral dan sesuai dengan kebijakan Wikipedia. (Februari 2021) MPWRTipePenyelenggara jasa seluler berbasis digitalTahun peluncuran1 Desember 2020ProdusenIndosatPenyedia saat iniIM3Tahun produksi terakhir17 Oktober 2022SloganIni Kekuatan KitaSitus web…

2011 Japanese simulation video game 2011 video gameThe Idolmaster 2Limited edition cover art of the Xbox 360 versionDeveloper(s)Bandai Namco GamesPublisher(s)Bandai Namco GamesDirector(s)Akihiro IshiharaMasataka KatōProducer(s)Yōzō SakagamiSeriesThe IdolmasterPlatform(s)PlayStation 3, Xbox 360ReleaseXbox 360: JP: February 24, 2011 JP: August 2, 2012 (Platinum Collection) PlayStation 3: JP: October 27, 2011 JP: August 2, 2012 (The Best)Genre(s)Raising simulation, RhythmMode(s)Single player The…

Jessie Rose sebagai Zayda di Fallen Fairies Jessie Kate Rose (18 November 1875 – 27 Mei 1928)[1] adalah seorang penyanyi opera dan aktris Inggris yang terkenal karena penampilannya sebagai kepala sekolah mezzo-soprano di opera milik Gilbert and Sullivan produksi Perusahaan Opera D'Oyly Carte. Dari tahun 1896 hingga 1899 dia memulai beberapa peran yang sebagian besar lebih kecil di opera Savoy dan kemudian terus memainkan berbagai peran yang lebih kecil dan lebih besar dal…

Perkebunan teh di Ciwidey, Bandung di Indonesia Sejarah teh adalah sejarah yang panjang, kompleks, dan tersebar di beberapa budaya selama rentang ribuan tahun. Teh kemungkinan berawal di barat daya China selama dinasti Shang sebagai minuman obat. data terawal yang terekam dalam meminum teh ada pada abad ke-3 Masehi, dalam sebuah teks medis yang ditulis oleh Hua Tuo. Teh pertama kali diperkenalkan ke pendeta dan pedagang Portugis di Cina pada abad ke-16. Meminum teh menjadi populer di Inggris sel…

Maya RudolphRudolph pada tahun 2012Lahir27 Juli 1972 (umur 51)Gainesville, Florida, Amerika SerikatAlmamaterUniversitas California, Santa CruzPekerjaanAktrisKomedianPenyanyiTahun aktif1996–sekarangPasanganPaul Thomas Anderson(2001–sekarang)Anak4Orang tuaRichard RudolphMinnie Riperton Maya Khabira Rudolph[1] (lahir 27 Juli 1972) adalah aktris, komedian dan penyanyi asal Amerika Serikat. Rudolph mulai dikenal pada pertengahan 1990-an sebagai anggota band rock alternatif The R…

Katedral Santo Konstantinus dan Santa Helena di Bălți, Moldova. Eparki Bălți dan Fălești (bahasa Moldova: Еparhia de Bălţi şi Făleşti, Rusia: Бельцкая и Фэлештская епархияcode: ru is deprecated ) adalah sebuah eparki atau keuskupan Gereja Ortodoks Moldova di bawah Patriarkat Moskwa dengan takhtanya di Katedral Santo Konstantinus dan Santa Helena di Bălți, Moldova. Riwayat Keuskupan Bălți dan Fălești didirikan pada 6 Oktober 2006 oleh Sinode Kudus G…

Perusahaan / pengembangKaiOS Technologies (Hong Kong) Limited (denganTCL sebagai pemegang saham terbesar)[1]Diprogram dalamHTML, CSS, JavaScriptKeluargaFirefox OS / Open Web (berbasis pada Linux kernel)Status terkiniAktifModel sumberSumber tertutupRilis perdanaOktober 2017Rilis final4.0.5,4.0.6,5.0.0 (Januari 2023) / Oktober 2017Rilis tak-stabil final4.0.5 (November 2017)Target pemasaranTelepon genggamManajer paketKaiStoreDukungan platformARMKernel typeMonolithic (Linux)Antarmuka ba…

An antibody digested by papain yields three fragments, two Fab fragments and one Fc fragment An antibody digested by pepsin yields two fragments: a F(ab')2 fragment and a pFc' fragment Fragmen konstan (Inggris: constant fragmentcode: en is deprecated ,[1] fragment crystallizable region, Fc, fragment constant region, constant region,[2] c region) adalah bagian dari molekul antibodi yang melaksanakan aktivitas biologis (eksekutif) dari kelas antibodi bersangkutan demi menggerakkan …

Matteo Lovato Informasi pribadiTanggal lahir 14 Februari 2000 (umur 24)Tempat lahir Monselice, Italia[1]Tinggi 188 cm (6 ft 2 in)[2]Posisi bermain Bek tengahInformasi klubKlub saat ini AtalantaNomor 66Karier junior–2016 Padova2016–2019 Genoa2018–2019 → Padova (pinjaman)Karier senior*Tahun Tim Tampil (Gol)2019–2020 Padova 17 (0)2020–2021 Hellas Verona 25 (0)2021– Atalanta 6 (0)Tim nasional‡2020– Italia U-21 7 (0) * Penampilan dan gol di klub s…

The president of the Parliamentary Assembly of the Council of Europe is the head of the Parliamentary Assembly of the Council of Europe (PACE): the deliberative consultative body of the Council of Europe. Current president Liliane Maury Pasquier (right) with OSCE PA President Gigi Tsereteli, 2019 Period Name Country Political affiliation 1949 Édouard Herriot (interim)  France Radical Party 1949–1951 Paul-Henri Spaak  Belgium Socialist Party 1952–1954 François de Menthon  Fra…

This article needs additional citations for verification. Please help improve this article by adding citations to reliable sources. Unsourced material may be challenged and removed.Find sources: List of FIFA Women's World Cup red cards – news · newspapers · books · scholar · JSTOR (August 2023) (Learn how and when to remove this template message) This is a list of all occasions where a football player was sent off from a FIFA Women's World Cup match due t…

Artikel ini sebatang kara, artinya tidak ada artikel lain yang memiliki pranala balik ke halaman ini.Bantulah menambah pranala ke artikel ini dari artikel yang berhubungan atau coba peralatan pencari pranala.Tag ini diberikan pada Desember 2022. Artikel ini tidak memiliki referensi atau sumber tepercaya sehingga isinya tidak bisa dipastikan. Tolong bantu perbaiki artikel ini dengan menambahkan referensi yang layak. Tulisan tanpa sumber dapat dipertanyakan dan dihapus sewaktu-waktu.Cari sumber:&#…

Artikel ini sebatang kara, artinya tidak ada artikel lain yang memiliki pranala balik ke halaman ini.Bantulah menambah pranala ke artikel ini dari artikel yang berhubungan atau coba peralatan pencari pranala.Tag ini diberikan pada Oktober 2022. Hindu Senaहिंदू सेनाTanggal pendirian10 Agustus 2011Kantor pusatHindu Mahasabha Bhawan,New Delhi, IndiaPresiden NasionalVishnu GuptaAfiliasiHindutvaNasionalisme HinduSitus webhindusena.co.in Hindu Sena (IAST: Hindu Sēnā) (terjemahan; T…

Basilika Bunda dari ChèvremontBasilika Minor Bunda dari ChèvremontPrancis: Basilique Notre-Dame de Chèvremontcode: fr is deprecated Basilika Bunda dari ChèvremontLokasiChaudfontaineNegara BelgiaDenominasiGereja Katolik RomaArsitekturStatusBasilika minorStatus fungsionalAktif Basilika Bunda dari Chèvremont (Belanda: Basilique Notre-Dame de Chèvremontcode: nl is deprecated ) adalah sebuah gereja basilika minor Katolik yang terletak di Chaudfontaine, Belgia. Basilika ini ditetapkan statu…

Artikel ini sebatang kara, artinya tidak ada artikel lain yang memiliki pranala balik ke halaman ini.Bantulah menambah pranala ke artikel ini dari artikel yang berhubungan atau coba peralatan pencari pranala.Tag ini diberikan pada Desember 2022. Anggar pada Olimpiade Tokyo dapat mengacu pada acara anggar pada Olimpiade Tokyo; Anggar pada Olimpiade Musim Panas 1964 Anggar pada Olimpiade Musim Panas 2020 Lihat juga Arena Anggar Olimpiade Tokyo (disambiguasi) Halaman disambiguasi ini berisi artikel…

Artikel ini memberikan informasi dasar tentang topik kesehatan. Informasi dalam artikel ini hanya boleh digunakan untuk penjelasan ilmiah; bukan untuk diagnosis diri dan tidak dapat menggantikan diagnosis medis. Wikipedia tidak memberikan konsultasi medis. Jika Anda perlu bantuan atau hendak berobat, berkonsultasilah dengan tenaga kesehatan profesional. Flu kudaSeekor kudaInformasi umumSpesialisasiKedokteran hewanPenderitaKudaPenyebabVirus influenza AAspek klinisGejala dan tandaDemam, keluarnya …

Bergen op ZoomMunisipalitasMarkiezenhof BenderaLambang kebesaranNegaraBelandaProvinsiBrabant UtaraLuas(2006) • Total93,13 km2 (3,596 sq mi) • Luas daratan80,76 km2 (3,118 sq mi) • Luas perairan12,38 km2 (478 sq mi)Populasi (1 Januari 2007) • Total65.454 • Kepadatan810/km2 (2,100/sq mi) Sumber: CBS, Statline.Zona waktuUTC+1 (CET) • Musim panas (DST)UTC+2 (CEST) Koord…

Patung Chullachaki dari Peru Chullachaki[1] (Quechua, berkaki satu, dari kata chulla atau ch'ulla = tunggal, ganjil, tidak berpasangan, chaki = kaki;[2][3][4] ejaan yang juga kadang digunakan dalam bahasa Spanyol)[5] atau Chullachaqui (ejaan Spanyol), juga dikenal dengan nama Shapishico, adalah makhluk hutan dalam mitologi penduduk asli di kawasan hutan Amazon yang terletak di Peru dan Brasil. Ia biasanya digambarkan sebagai makhluk yang pendek dan buruk r…

Persegi GianyarNama lengkapPersatuan Sepak bola GianyarJulukanKuda JingkrakStadionStadion Kapten I Wayan Dipta Gianyar, Bali(Kapasitas: 25,000)PemilikPT Bali SportLigaLiga 3 Kostum kandang Kostum tandang Persatuan Sepak bola Indonesia Gianyar (biasa disingkat: Persegi Bali FC) adalah sebuah klub sepak bola Indonesia yang bermarkas di Gianyar, Provinsi Bali. Tim ini promosi ke Divisi Utama Liga Indonesia sejak musim kompetisi tahun 2005. Persegi Bali FC bermarkas di Stadion Dipta, Gianyar. Bekas …

Kembali kehalaman sebelumnya