Algoritma tamak ialah algoritma yang pada setiap langkah memilih varian optimum (dalam langkah semasa) dengan jangkaan bahawa penyelesaian akhir akan optimum dalam pengertian global.
Contoh kecil:
Katakan kita mempunyai bilangan syiling yang tidak terhad dalam denominasi berbeza dan kita perlu mengumpul jumlah S. Mari kita pertimbangkan dua kes tertentu, setiap satu daripadanya akan kita cuba selesaikan dengan algoritma tamak.
Iaitu, kami akan bertindak seperti berikut: pada setiap langkah kami akan mengambil syiling dengan denominasi tertinggi (pilihan terbaik dalam langkah), yang tidak melebihi jumlah yang tinggal.
a) Biarkan denominasi syiling ialah 1, 5 dan 10, dan S = 27.
1) Ambil 10, S: 27 -> 17
2) Ambil 10, S: 17 -> 7
3) Ambil 5, S: 7 -> 2
4) Ambil 1, S: 2 -> 1
5) Ambil 1, S: 1 -> 0
Akibatnya, mereka mendapat jumlah lima syiling. Anda boleh secara bebas (contohnya, kekerasan) memastikan bahawa untuk 4 syiling atau kurang anda tidak akan dapat menjaringkan 27.
b) Biarkan denominasi syiling itu ialah 1, 5 dan 7, dan S = 24.
1) Ambil 7, S: 24 -> 17
2) Ambil 7, S: 17 -> 10
3) Ambil 7, S: 10 -> 3
4) Ambil 1, S: 3 -> 2
5) Ambil 1, S: 2 -> 1
6) Ambil 1, S: 1 -> 0.
Kami menjaringkan enam syiling, tetapi boleh menjaringkan S dengan empat syiling - dua dengan nilai muka 7 dan dua dengan nilai muka 5.
Seperti yang dapat dilihat dari contoh, tidak selalu mungkin untuk menyelesaikan masalah dengan algoritma tamak. Tetapi jika ia membawa kepada jawapan optimum keseluruhan, maka ia biasanya lebih mudah daripada menggunakan pengaturcaraan dinamik atau kaedah lain.