Apa perbedaan antara heuristik dan algoritma?

103

Apa perbedaan antara heuristik dan algoritma?

parade jalanan
sumber
1
Jika Anda melihat algoritma heuristik sebagai semacam struktur pohon, saya rasa Anda bisa menyebutnya sebagai algoritma tujuan khusus.
James P.
Heuristik adalah algoritme yang (terbukti) tidak berfungsi.
JeffE

Jawaban:

99

Algoritme adalah deskripsi solusi otomatis untuk suatu masalah . Apa yang dilakukan algoritme ditentukan dengan tepat. Solusinya bisa atau tidak bisa menjadi yang terbaik tetapi Anda tahu sejak awal hasil seperti apa yang akan Anda dapatkan. Anda menerapkan algoritme menggunakan beberapa bahasa pemrograman untuk mendapatkan (bagian dari) program .

Sekarang, beberapa masalah sulit dan Anda mungkin tidak dapat memperoleh solusi yang dapat diterima dalam waktu yang dapat diterima. Dalam kasus seperti itu, Anda sering bisa mendapatkan solusi yang tidak terlalu buruk lebih cepat, dengan menerapkan beberapa pilihan sewenang-wenang (tebakan cerdas): itu heuristik .

Heuristik masih merupakan sejenis algoritme, tetapi algoritme yang tidak akan mengeksplorasi semua kemungkinan status masalah, atau akan mulai dengan menjelajahi kemungkinan yang paling mungkin.

Contoh tipikal berasal dari game. Saat menulis program permainan catur, Anda dapat membayangkan mencoba setiap kemungkinan gerakan pada tingkat kedalaman tertentu dan menerapkan beberapa fungsi evaluasi pada papan. Heuristik akan mengecualikan cabang penuh yang dimulai dengan gerakan yang jelas-jelas buruk.

Dalam beberapa kasus, Anda tidak mencari solusi terbaik, tetapi untuk solusi apa pun yang sesuai dengan beberapa kendala. Heuristik yang baik akan membantu menemukan solusi dalam waktu singkat, tetapi mungkin juga gagal menemukan solusi jika satu-satunya solusi ada di negara bagian yang dipilih untuk tidak dicoba.

kriss
sumber
3
Penggunaan umum lainnya untuk heuristik adalah dalam deteksi virus, di mana Anda mungkin tidak yakin ada virus di sana, tetapi Anda dapat mencari atribut kunci tertentu dari suatu virus.
Dana Holt
Heah itu benar dan untuk program cracking
streetparade
1
@kriss, Jadi .. heuristik adalah sejenis algoritma.
Pacerier
1
@Pacerier: ya. Ini adalah algoritme yang membantu menavigasi dalam ruang solusi dari masalah tertentu. Anda juga dapat melihatnya sebagai strategi untuk memodifikasi algoritma agar menjadi praktis (meta-algoritma). Ini masih sebuah algoritma, semua metode adalah, dan Heuristik adalah sebuah metode.
kriss
33
  • Algoritme biasanya bersifat deterministik dan terbukti memberikan hasil yang optimal
  • Heuristik tidak memiliki bukti kebenaran, sering kali melibatkan elemen acak, dan mungkin tidak memberikan hasil yang optimal.

Banyak masalah yang tidak diketahui algoritma yang efisien untuk menemukan solusi optimal memiliki pendekatan heuristik yang menghasilkan hasil mendekati optimal dengan sangat cepat.

Ada beberapa tumpang tindih: "algoritma genetika" adalah istilah yang diterima, tetapi secara tegas, itu adalah heuristik, bukan algoritma.

Michael Borgwardt
sumber
2
Saya tidak akan mengatakan bahwa suatu algoritma terbukti menghasilkan hasil yang optimal: itu tergantung pada algoritma sehubungan dengan masalah yang mana.
nbro
Menghasilkan hasil yang optimal bukanlah kualitas esensial dari algoritme, itu adalah ketepatan yaitu hasil yang tepat sedangkan heuristik memberi Anda hasil perkiraan.
Marina Dunst
22

Heuristik, singkatnya adalah "Tebakan yang Dididik". Wikipedia menjelaskannya dengan baik. Pada akhirnya, metode "penerimaan umum" diambil sebagai solusi optimal untuk masalah yang ditentukan.

Heuristik adalah kata sifat untuk teknik berbasis pengalaman yang membantu dalam pemecahan masalah, pembelajaran, dan penemuan. Metode heuristik digunakan untuk segera menemukan solusi yang diharapkan mendekati jawaban terbaik, atau 'solusi optimal'. Heuristik adalah "aturan praktis", tebakan terpelajar, penilaian intuitif atau hanya akal sehat. Heuristik adalah cara umum untuk memecahkan masalah. Heuristik sebagai kata benda adalah nama lain untuk metode heuristik.

Dalam istilah yang lebih tepat, heuristik berarti strategi yang menggunakan informasi yang mudah diakses, meskipun dapat diterapkan secara longgar, untuk mengontrol penyelesaian masalah pada manusia dan mesin.

Sedangkan algoritma adalah metode yang berisi sekumpulan instruksi terbatas yang digunakan untuk memecahkan suatu masalah. Metode ini telah terbukti secara matematis atau ilmiah untuk menyelesaikan masalah. Ada metode dan bukti formal.

Algoritme heuristik adalah algoritme yang mampu menghasilkan solusi yang dapat diterima untuk suatu masalah dalam banyak skenario praktis, dengan cara heuristik umum, tetapi tidak ada bukti formal tentang kebenarannya.

Buhake Sindi
sumber
8

Sebuah algoritma adalah seperangkat mandiri langkah-demi-langkah operasi yang akan dilakukan 4 , biasanya diartikan sebagai urutan terbatas instruksi (komputer atau manusia) untuk menentukan solusi untuk masalah seperti: apakah ada jalan dari A ke B, atau apa yang merupakan jalur terkecil antara A dan B. Dalam kasus terakhir, Anda juga bisa puas dengan solusi alternatif yang 'cukup dekat'.

Ada kategori tertentu dari algoritma, dimana algoritma heuristik adalah salah satunya. Bergantung pada properti (terbukti) dari algoritme dalam kasus ini, ini termasuk dalam salah satu dari tiga kategori berikut (catatan 1):

  • Exact : solusi terbukti menjadi solusi optimal (atausolusi tepat ) untuk masalah input
  • Approximation : deviasi nilai solusi terbukti tidak pernah jauh dari nilai optimal daripada beberapa batas yang telah ditentukan sebelumnya (misalnya, tidak pernah lebih dari 50% lebih besar dari nilai optimal)
  • Heuristik : algoritme belum terbukti optimal, atau dalam batas yang ditentukan sebelumnya dari solusi optimal

Perhatikan bahwa algoritma aproksimasi juga merupakan heuristik, tetapi dengan properti yang lebih kuat bahwa ada ikatan yang terbukti ke solusi (nilai) yang dikeluarkannya.

Untuk beberapa masalah, tidak ada yang pernah menemukan algoritma 'efisien' untuk menghitung solusi optimal (catatan 2). Salah satu masalah tersebut adalah Travelling Salesman Problem yang terkenal. Algoritma Christophides untuk Travelling Salesman Problem, misalnya, dulu disebut heuristik , karena tidak terbukti dalam 50% solusi optimal. Namun, karena telah terbukti, algoritma Christophides lebih tepat disebut sebagai algoritma aproksimasi.

Karena batasan pada apa yang dapat dilakukan komputer, tidak selalu mungkin untuk menemukan solusi terbaik secara efisien . Jika ada cukup struktur dalam suatu masalah, mungkin ada cara yang efisien untuk melintasi ruang solusi, meskipun ruang solusi sangat besar (yaitu dalam masalah jalur terpendek).

Heuristik biasanya diterapkan untuk meningkatkan waktu berjalannya algoritme, dengan menambahkan 'informasi ahli' atau 'tebakan cerdas' untuk memandu arah pencarian. Dalam praktiknya, heuristik juga dapat menjadi sub-rutin untuk algoritme yang optimal, untuk menentukan di mana harus mencari terlebih dahulu .

(Catatan 1) : Selain itu, algoritme dicirikan oleh apakah algoritme tersebut menyertakan elemen acak atau non-deterministik. Algoritma yang selalu dijalankan dengan cara yang sama dan menghasilkan jawaban yang sama disebut deterministik.

(Catatan 2) : Ini disebut masalah P vs NP, dan masalah yang diklasifikasikan sebagai NP-complete dan NP-hard sepertinya tidak memiliki algoritme 'efisien'. Catatan; seperti yang disebutkan @Kriss di komentar, bahkan ada jenis masalah yang 'lebih buruk', yang mungkin membutuhkan waktu atau ruang eksponensial untuk menghitungnya.

Ada beberapa jawaban yang menjawab sebagian dari pertanyaan tersebut. Saya menganggapnya kurang lengkap dan tidak cukup akurat, dan memutuskan untuk tidak mengedit jawaban yang diterima yang dibuat oleh @Kriss

Joost
sumber
Saya yakin definisi Anda tentang algoritme kata terlalu membatasi. Apakah penggunaan urutan kata menyiratkan non-paralel? Algoritma Parallell baik-baik saja dan bahkan biasa sekarang ini. Bagaimana dengan memecahkan masalah menggunakan jaringan saraf? Atau alat propagasi kendala? Algoritma? Algoritme meta?
kriss
Pembaca merasa masalah NP semakin buruk. Itu tidak benar. Ada masalah yang benar-benar sulit membutuhkan algoritma yang benar-benar buruk seperti yang eksponensial atau lebih buruk. NP itu istimewa karena kalau kita punya solusinya gampang dan cepat mengeceknya, sedangkan susah mencarinya kalau kita belum punya. Sangat mudah untuk memeriksa bahwa kami memiliki instruksi yang benar untuk keluar dari labirin, jauh lebih sulit untuk menemukan jalan keluarnya. Jadi NP itu mudah dan sulit jika kita bisa mencoba semua solusi yang mungkin pada saat yang sama (non deterministik) menyelesaikannya akan sangat sederhana ... tapi kita tidak bisa.
kriss
Terima kasih untuk umpan baliknya! Saya telah memperbarui frasa sedikit, dan melakukan pendekatan yang berbeda. Dalam pandangan saya, propagasi batasan adalah teknik untuk mendekati sesuatu, tetapi belum merupakan algoritma yang menjelaskan bagaimana langkah bijak sampai pada solusi yang dijelaskan dalam propagasi batasan. Anda tentu saja benar tentang kelas expspace dan 'lebih buruk', saya telah menambahkan catatan tentang itu juga. BTW: harap tulis NP-Complete dan / atau NP-Hard sepenuhnya, karena bagian dari NP juga berisi masalah yang dapat dipecahkan 'secara efisien', yang bukan (diduga) kelas yang sama.
Joost
Tentu saja Anda benar, saya harus menulis NP-Complete. Salahku.
kriss
Ini jauh lebih baik dari apa yang salah satu rekan saya beri nama: NP-ness (yang terdengar sangat buruk dan agak kotor ...)
Joost
6

Sebenarnya saya tidak berpikir ada banyak kesamaan di antara mereka. Beberapa algoritma menggunakan heuristik dalam logikanya (seringkali untuk membuat lebih sedikit perhitungan atau mendapatkan hasil yang lebih cepat). Biasanya heuristik digunakan dalam apa yang disebut algoritma serakah.

Heuristik adalah beberapa "pengetahuan" yang kami anggap bagus untuk digunakan untuk mendapatkan pilihan terbaik dalam algoritme kami (kapan pilihan harus diambil). Misalnya ... heuristik dalam catur bisa jadi (selalu ambil ratu lawan jika Anda bisa, karena Anda tahu ini adalah sosok yang lebih kuat). Heuristik tidak menjamin Anda akan membawa Anda ke jawaban yang benar, tetapi (jika asumsinya benar) sering kali mendapatkan jawaban yang mendekati terbaik dalam waktu yang jauh lebih singkat.

anthares
sumber
4

Heuristik adalah algoritme, jadi dalam pengertian itu tidak ada, namun, heuristik mengambil pendekatan 'tebakan' untuk pemecahan masalah, menghasilkan jawaban yang 'cukup baik', daripada menemukan solusi 'terbaik'.

Contoh yang baik adalah di mana Anda memiliki masalah yang sangat sulit (baca NP-complete) yang Anda ingin solusinya tetapi tidak punya waktu untuk menyelesaikannya, jadi harus menggunakan solusi yang cukup baik berdasarkan algoritma heuristik, seperti menemukan solusi untuk masalah penjual keliling dengan menggunakan algoritma genetika.

dsm
sumber
4

Algoritma adalah urutan dari beberapa operasi yang diberi masukan menghitung sesuatu (suatu fungsi) dan mengeluarkan suatu hasil.

Algoritme dapat menghasilkan nilai yang tepat atau perkiraan.

Itu juga dapat menghitung nilai acak dengan probabilitas tinggi mendekati nilai yang tepat.

Algoritme heuristik menggunakan beberapa wawasan tentang nilai input dan menghitung bukan nilai yang tepat (tetapi mungkin mendekati optimal). Dalam beberapa kasus khusus, heuristik dapat menemukan solusi yang tepat.

Slava
sumber
3

Algoritma adalah seperangkat instruksi yang didefinisikan dengan jelas untuk memecahkan masalah, Heuristik melibatkan penggunaan pendekatan pembelajaran dan penemuan untuk mencapai solusi.

Jadi, jika Anda tahu cara memecahkan masalah, gunakan algoritma. Jika Anda perlu mengembangkan solusi maka itu adalah heuristik.

Lazarus
sumber
2

Heuristik biasanya merupakan optimasi atau strategi yang biasanya memberikan jawaban yang cukup baik, tetapi tidak selalu dan jarang merupakan jawaban terbaik. Misalnya, jika Anda menyelesaikan masalah penjual keliling dengan kekerasan, membuang solusi parsial setelah biayanya melebihi solusi terbaik saat ini adalah heuristik: terkadang membantu, di lain waktu tidak, dan pasti tidak • meningkatkan waktu berjalan teoretis (notasi besar-oh) dari algoritme

IVlad
sumber
2

Saya pikir Heuristik lebih merupakan kendala yang digunakan dalam Model Berbasis Pembelajaran di Artificial Intelligent karena solusi masa depan menyatakan sulit untuk diprediksi.

Tapi kemudian keraguan saya setelah membaca jawaban di atas adalah "Bagaimana Heuristik dapat berhasil diterapkan menggunakan Teknik Optimasi Stochastic? Atau dapatkah mereka berfungsi sebagai algoritma lengkap saat digunakan dengan Stochastic Optimization?"

http://en.wikipedia.org/wiki/Stochastic_optimization

A_tanA
sumber
Ups !! kesalahan ejaan seharusnya "Artificial Intelligence"
A_tanA
2

Salah satu penjelasan terbaik yang pernah saya baca berasal dari buku besar Code Complete , yang sekarang saya kutip:

Heuristik adalah teknik yang membantu Anda mencari jawaban. Hasilnya bergantung pada kebetulan karena heuristik hanya memberi tahu Anda cara melihat, bukan apa yang harus ditemukan. Ini tidak memberi tahu Anda bagaimana pergi langsung dari titik A ke titik B; bahkan mungkin tidak tahu di mana titik A dan titik B. Akibatnya, heuristik adalah algoritme dalam setelan badut. Ini kurang dapat diprediksi, lebih menyenangkan, dan datang tanpa jaminan uang kembali 30 hari.

Berikut ini algoritme untuk mengemudi ke rumah seseorang: Ambil Highway 167 ke selatan ke Puy-allup. Ambil jalan keluar South Hill Mall dan berkendara 4,5 mil ke atas bukit. Belok kanan di lampu penerangan dekat toko bahan makanan, lalu ambil belokan kiri pertama. Belok ke jalan masuk rumah cokelat besar di sebelah kiri, di 714 North Cedar.

Berikut adalah heuristik untuk sampai ke rumah seseorang: Temukan surat terakhir yang kami kirimkan kepada Anda. Berkendara ke kota di alamat pengirim. Ketika Anda sampai di kota, tanyakan pada seseorang dimana rumah kita. Semua orang mengenal kami — seseorang akan dengan senang hati membantu Anda. Jika Anda tidak dapat menemukan siapa pun, hubungi kami dari telepon umum, dan kami akan menjemput Anda.

Perbedaan antara algoritme dan heuristik tidak kentara, dan kedua istilah tersebut agak berlebihan. Untuk keperluan buku ini, perbedaan utama antara keduanya adalah tingkat tipuan dari solusi. Algoritme memberi Anda instruksi secara langsung. Heuristik memberi tahu Anda cara menemukan instruksi untuk diri Anda sendiri, atau setidaknya di mana mencarinya.

Edwin Dalorzo
sumber
Menyatakan bahwa ada perbedaan antara algoritma dan heuristik seperti menyatakan bahwa ada perbedaan antara burung dan ayam. Heuristik adalah jenis algoritma.
Joost
0

Mereka menemukan solusi secara suboptimal tanpa jaminan kualitas solusi yang ditemukan, jelas bahwa pengembangan heuristik hanya masuk akal untuk polinomial. Penerapan metode ini cocok untuk memecahkan masalah dunia nyata atau masalah besar yang begitu canggung dari sudut pandang komputasi sehingga bagi mereka bahkan tidak ada algoritme yang mampu menemukan solusi perkiraan dalam waktu polinomial.

kafka
sumber