[ad_1]
Algoritma Kadane adalah teknik pemrograman dinamis yang digunakan untuk menemukan jumlah subarray maksimum dalam array angka yang diberikan. Dinamai setelah penemunya, Jay Kadane, algoritma yang elegan ini mempunyai aplikasi di berbagai domain, dari ilmu komputer dan analisis knowledge sampai keuangan dan pemrosesan gambar. Akan bermanfaat bagi Anda untuk memahami mekanisme yang mendasari algoritma Kadane, implementasi kode Java, proses langkah demi langkah, algoritma Leetcode Kadane, C, C ++, kompleksitas waktunya, keunggulan dan gangguan, aplikasi praktis, dan sejumlah besar lagi.
ADVERTISEMENT
SCROLL TO RESUME CONTENT
Apa algoritma Kadane?
Algoritma Kadane adalah algoritma waktu linier yang digunakan untuk menemukan jumlah subarray maksimum dalam array yang diberikan. Subarray didefinisikan sebagai subset elemen yang berdekatan dalam array. Algoritma ini menangani angka positif dan negatif dengan sangat efisien, yang menjadikannya alat serba guna untuk menghentikan sejumlah besar masalah yang melibatkan subarray.
Bekerja dari algoritma Kadane
Algoritma Kadane memakai pendekatan pemrograman dinamis yang secara iteratif menghitung jumlah subarray maksimum yang berakhir pada setiap posisi dalam array. Wawasan kritis di balik algoritma adalah untuk mempertimbangkan jumlah subarray maksimum yang berakhir pada posisi sementara itu dan memperbarui berdasarkan jumlah subarray maksimum sebelumnya.
Proses langkah demi langkah algoritma Kadane
Berikut ini adalah kerusakan langkah demi langkah tentang cara kerja algoritma Kadane:
- Inisialisasi dua variabel, max_so_far dan max_ending_here, ke 0.
- Iterasi melalui array dari kiri ke kanan, memeriksa setiap elemen satu in step with satu.
- Untuk setiap elemen, perbarui max_ending_here sebagai nilai maksimum adalah elemen sementara itu atau jumlah elemen sementara itu dan max_ending_here.
- Perbarui max_so_far sebagai maksimum dari max_so_far sementara itu atau max_ending_here.
- Ulangi langkah 3 dan 4 untuk semua elemen dalam array.
- Nilai max_so_far di akhir iterasi akan menjadi jumlah subarray maksimum.
Contoh
Mari kita ilustrasikan algoritma Kadane di Java dengan contoh:
Array Enter: (-2, 1, -3, 4, -1, 2, 1, -5, 4)
- Inisialisasi max_so_far dan max_ending_here sebagai 0.
- Mulailah iterasi melalui array:
- Pada elemen -2: max_ending_here menjadi -2 (sebab maksimum -2 dan 0).
- MAX_SO_FAR tetap 0.
- Pada elemen 1: max_ending_here menjadi 1 (sebab maksimum 1 dan -2 + 1).
- max_so_far menjadi 1 (sebab maksimum 1 dan 0).
- Lanjutkan proses ini untuk seluruh array.
- Setelah iterasi, max_so_far adalah 6, jumlah subarray maksimum.
Subarray maksimum dalam contoh ini adalah (4, -1, 2, 1), dengan jumlah 6.
Implementasi Kode dalam C, C ++, dan Java:
Berikut adalah implementasi kode algoritma Kadane di C, C ++, dan Java:
C:
C
Salin kode
#termasuk
int maxsubarraysum (int arr (), int ukuran) {
int max_so_far = 0, max_ending_here = 0;
untuk (int i = 0; i
max_ending_here = max_ending_here + arr (i);
if (max_ending_here <0) {
max_ending_here = 0;
}
if (max_so_far
max_so_far = max_ending_here;
}
}
go back max_so_far;
}
int major () {
int arr () = {-2, 1, -3, 4, -1, 2, 1, -5, 4};
ukuran int = sizeof (ARR) / sizeof (ARR (0));
int maxsum = maxsubarraysum (arr, measurement);
printf (“jumlah subarray maksimum adalah %d n”, maxsum);
kembali 0;
}
C ++:
CPP
Salin kode
#termasuk
memakai namespace std;
int maxsubarraysum (int arr (), int ukuran) {
int max_so_far = 0, max_ending_here = 0;
untuk (int i = 0; i
max_ending_here = max_ending_here + arr (i);
if (max_ending_here <0) {
max_ending_here = 0;
}
if (max_so_far
max_so_far = max_ending_here;
}
}
go back max_so_far;
}
int major () {
int arr () = {-2, 1, -3, 4, -1, 2, 1, -5, 4};
ukuran int = sizeof (ARR) / sizeof (ARR (0));
int maxsum = maxsubarraysum (arr, measurement);
cout << "jumlah subarray maksimum adalah" << maxsum << endl;
kembali 0;
}
Jawa:
Jawa
Salin kode
Kelas Publik Kadanealgorithm {
public static int maxsubarraysum (int () arr) {
int max_so_far = 0, max_ending_here = 0;
untuk (int i = 0; i
max_ending_here = max_ending_here + arr (i);
if (max_ending_here <0) {
max_ending_here = 0;
}
if (max_so_far
max_so_far = max_ending_here;
}
}
go back max_so_far;
}
public static void major (string () args) {
int () arr = {-2, 1, -3, 4, -1, 2, 1, -5, 4};
int maxsum = maxsubarraysum (ARR);
Machine.out.println (“jumlah subarray maksimum adalah” + maxsum);
}
}
Kompleksitas waktu
Algoritma Kadane mempunyai kompleksitas waktu O (n), di mana N adalah jumlah elemen dalam array enter. Ini membuatnya sangat efisien dan cocok untuk kumpulan knowledge besar.
Keuntungan dan Kerugian Algoritma Kadane
Keuntungan dari algoritma Kadane
- Efisien dengan kompleksitas waktu O (n).
- Menangani bilangan positif dan negatif.
- Sederhana dan mudah diimplementasikan.
Kerugian dari algoritma Kadane
- Ini hanya memberikan jumlah subarray maksimum, bukan subarray yang nyatanya itu sendiri (meski demikian modifikasi bisa dilakukan untuk mengawasi subarray).
Aplikasi algoritma Kadane
Algoritma Kadane menemukan aplikasi di berbagai bidang, termasuk
Ilmu Komputer
Digunakan dalam algoritma optimasi dan memecahkan masalah yang keterkaitan dengan array dan selanjutnya.
Keuangan
Menganalisis knowledge keuangan untuk menemukan portofolio investasi berkinerja terbaik.
Analisis Information
Mengidentifikasi jumlah subarray maksimum dalam dataset, seperti harga saham, untuk menyelesaikan waktu terbaik untuk membeli atau menjual.
Pemrosesan gambar
Mendeteksi pola dan fitur dalam gambar atau video.
Genomik
Menganalisis sekuens DNA untuk menemukan selanjutnya dengan signifikansi maksimum.
Kesimpulan
Algoritma Kadane adalah alat yang ampuh untuk secara efisien menemukan jumlah subarray maksimum dalam array angka. Kesederhanaan, keserbagunaan, dan kompleksitas waktu linier membuatnya berharga di berbagai domain, dari ilmu komputer sampai keuangan dan seterusnya. Dengan memahami cara kerja dan aplikasinya, Anda bisa mendapatkan manfaat dari potensi penuh dari algoritma ini untuk memecahkan berbagai masalah dunia nyata.
Andai Anda ingin meningkatkan keterampilan pengembangan perangkat lunak Anda lebih lanjut, kami akan menyarankan Anda memeriksa Simplilearn's Program Sertifikat Profesional dalam Pengembangan Tumpukan Lengkap – Mern. Program ini, bekerja sama dengan IIT Madras, bisa membantu Anda dalam mengembangkan keterampilan yang diperlukan dan mempersiapkan Anda untuk pekerjaan, memastikan Anda siap kerja.
Andai Anda mempunyai pertanyaan atau keraguan, jangan ragu untuk mempostingnya di bagian komentar di bawah ini. Tim kami akan kembali kepada Anda paling awal.
FAQ
Mengapa algoritma Kadane penting?
Algoritma Kadane sangat penting sebab secara efisien menemukan jumlah subarray maksimum dalam array, masalah dengan sejumlah besar aplikasi di berbagai domain, termasuk ilmu komputer, keuangan, dan analisis knowledge.
Apa algoritma Kadane untuk substring?
Algoritma Kadane terutama digunakan untuk menemukan jumlah subarray maksimum, bukan substring. Tetapi, bisa disesuaikan untuk mengawasi indeks awal dan akhir dari subarray maksimum untuk dapatkan substring itu sendiri.
Di mana algoritma Kadane digunakan?
Algoritma Kadane digunakan dalam ilmu komputer untuk mengoptimalkan algoritma dan dalam keuangan, analisis knowledge, pemrosesan gambar, genomik, dan sejumlah besar lagi, di mana pun jumlah subarray maksimum perlu ditentukan.
Apa algoritma serakah Kadane?
Algoritma Kadane kadang -kadang disebut algoritma serakah sebab membuat pilihan optimum lokal (menjaga subarray maksimum berakhir pada posisi sementara itu) pada setiap langkah, yang akhirnya mengarah ke solusi optimum global (jumlah subarray maksimum).
(Tagstotranslate) Kadane
[ad_2]
Sumber: simplilearn-com








