Etkinlik Seçimi
Açgözlü Algoritmalar O(n log n) O(1)Her zaman en erken biteni alarak çakışmayan en fazla sayıda etkinliği seçer.
Bitiş zamanına göre sıralı — çizgi son bitişi gösterir.
1/20
Etkinlikler bitiş zamanına göre sıralandı — en erken biten önce.
DeğişmezEn erken biteni almak geri kalana en çok yeri bırakır — bu yüzden açgözlü seçim optimalden hiç kötü değildir.
activity-selection.c
/* activities sorted by finish time */void activitySelect(int start[], int finish[], int n) {int lastFinish = finish[0];printf("select 0\n");for (int i = 1; i < n; i++) {if (start[i] >= lastFinish) {printf("select %d\n", i);lastFinish = finish[i];}}}
Etkinlik Seçimi nasıl çalışır?
Bitiş zamanına göre sırala ve her zaman seni en erken serbest bırakan etkinliği al. En erken biten her zaman bir optimal çözüme takas edilebilir; açgözlü seçim güvenlidir.
Ne zaman kullanılır?
Tek kaynakta aralık planlama: toplantı odaları, makineler, CPU zaman dilimleri.