N-Queens problemi, n×n boyutundaki bir satranç tahtasına n adet veziri, hiçbirinin birbirini tehdit etmeyecek şekilde yerleştirme sorunudur. Vezirler yatay, dikey ve çapraz hareket edebildiği için geri izleme (backtracking) algoritmasının klasik uygulamasıdır.
N-Queens Problemi (Geri İzleme Algoritması) algoritmasının farklı programlama dillerindeki uygulamaları aşağıda verilmiştir. Her örnek, algoritmanın temel akışını açık şekilde gösterecek biçimde sunulmuştur.
1function solveNQueens(n: number): number[][] {2 const solutions: number[][] = [];3 const board: number[] = Array(n).fill(-1);45 function isSafe(row: number, col: number): boolean {6 for (let i = 0; i < row; i++) {7 if (board[i] === col || Math.abs(i - row) === Math.abs(board[i] - col)) return false;8 }9 return true;10 }1112 function backtrack(row: number): void {13 if (row === n) {14 solutions.push([...board]);15 return;16 }17 for (let col = 0; col < n; col++) {18 if (isSafe(row, col)) {19 board[row] = col;20 backtrack(row + 1);21 board[row] = -1;22 }23 }24 }2526 backtrack(0);27 return solutions;28}Aşağıya kendi verilerinizi girerek algoritmanın örnek çalışma akışını görebilirsiniz. Virgülle ayrılmış sayılar veya metin değerleri kullanabilirsiniz.
Girilen veri, algoritmanın pseudo kodundaki genel akışa göre örnek bir sonuca dönüştürülür.
En İyi Durum: O(n!)
Ortalama Durum: O(n!)
En Kötü Durum: O(n!)
O(n²) - Çalışma süresi, giriş boyutunun karesi ile orantılıdır.
N-Queens Problemi (Geri İzleme Algoritması) ile benzer veya alternatif olarak değerlendirilebilecek diğer başlıklar:
Bu kullanım alanı, algoritmanın benzer problem aileleriyle birlikte incelenmesi için iyi bir başlangıç noktasıdır.
Bu kullanım alanı, algoritmanın benzer problem aileleriyle birlikte incelenmesi için iyi bir başlangıç noktasıdır.
Bu kullanım alanı, algoritmanın benzer problem aileleriyle birlikte incelenmesi için iyi bir başlangıç noktasıdır.