---
title: Floyd-Warshall Algoritması
slug: floyd-warshall-algoritmasi-3
url: /detay/floyd-warshall-algoritmasi-3
type: article
language: Türkçe
entity:
  primary: Floyd-Warshall Algoritması
  type: article
  disambiguation: Floyd-Warshall algoritması: Tüm düğüm çiftleri arası en kısa yolu bulan etkili bir algoritma.
  categories:
    - name: Matematik
      slug: matematik
      url: /kategori/matematik
    - name: Yazılım Ve Yapay Zekâ
      slug: yazilim-ve-yapay-zeka
      url: /kategori/yazilim-ve-yapay-zeka
  tags:
    - Floyd-Warshall
    - Negatif Ağırlık
    - algoritma
    - Dinamik programlama
    - Çizge teorisi
author: Beyza Nur Türkü
created_at: 2025-01-28T17:01:38.765116+03:00
updated_at: 2025-04-17T12:33:58.453424+03:00
---

# Floyd-Warshall Algoritması

<!-- CONTEXT: Article Content for "Floyd-Warshall Algoritması" -->

## Article Content

Floyd-Warshall Algoritması, [çizge](/tr/detay/cizge-04fc3/llms.txt) teorisinde kullanılan ve tüm [düğüm](/tr/detay/dugum-749841/llms.txt) çiftleri arasındaki en [kısa](/tr/detay/kisa/llms.txt) yolları bulmak için tasarlanmış bir algoritmadır. Bu [algoritma](/tr/detay/algoritma-6/llms.txt), [dinamik programlama](/tr/detay/dinamik-programlama-751539/llms.txt) yaklaşımını kullanır ve hem pozitif hem de negatif ağırlıklı kenarlara sahip çizgelerde çalışabilir (ancak negatif ağırlıklı döngüler içermemelidir). Algoritma, 1962 yılında Robert Floyd ve Stephen Warshall tarafından [bağımsız](/tr/detay/bagimsiz-2/llms.txt) olarak geliştirilmiştir.

### **Çalışma Prensibi**

Floyd-Warshall Algoritması, bir çizgedeki tüm düğüm çiftleri arasındaki en kısa yolları bulmak için kademeli bir yaklaşım kullanır. Algoritma, her adımda bir ara düğüm ekleyerek en kısa yolları günceller.

**1- Başlangıç:**

- Çizgenin komşuluk matrisi kullanılır. Bu matris, düğümler arasındaki doğrudan kenar ağırlıklarını içerir.
- Eğer iki düğüm arasında doğrudan bir kenar yoksa, mesafe sonsuz (∞) olarak ayarlanır.
- Her düğümün kendisine olan mesafesi 0 olarak belirlenir.

**2- Dinamik Programlama Yaklaşımı:**

- Algoritma, her bir düğümü ara düğüm olarak kullanır ve tüm düğüm çiftleri arasındaki mesafeleri günceller.
- Her adımda, bir düğüm k ara düğüm olarak seçilir ve tüm (i,j) düğüm çiftleri için şu formül uygulanır: *dist[i][j] = min(dist[i][j], dist[i][k] + dist[k][j])*

Burada:

- dist[i][j]: i ve j düğümleri arasındaki mevcut en kısa mesafe. 
- dist[i][k]: i ve k düğümleri arasındaki mesafe.
- dist[k][j]: k ve j düğümleri arasındaki mesafe.

**3- Tüm Ara Düğümlerin İşlenmesi:**

- Algoritma, tüm düğümleri sırayla ara düğüm olarak kullanır ve her adımda mesafeleri günceller.
- Bu işlem, tüm düğümler ara düğüm olarak kullanılana kadar devam eder.

**4- Sonuç:**

- Algoritma tamamlandığında, dist[i][j] matrisi, tüm (i,j) düğüm çiftleri arasındaki en kısa mesafeleri içerir.


![Image](https://cdn.kureansiklopedi.com/media/uploads/2025/01/28/W3nwQGOJgNhSlNOalZzgKH2Xm5iDDJSS.png)
*Floyd-Warshall Algoritması örneği*


### **Floyd-Warshall Algoritması Java Kodu**

### **Zaman Karmaşıklığı**

Floyd-Warshall Algoritması'nın [zaman](/tr/detay/zaman-2/llms.txt) karmaşıklığı *O(V3)*'tür, burada *V* düğüm sayısını temsil eder. Bu, algoritmanın büyük çizgelerde yavaş olabileceği anlamına gelir, ancak tüm düğüm çiftleri arasındaki en kısa yolları bulmak için etkili bir yöntemdir.

### **Sınırlamalar**

- **Negatif Ağırlıklı Döngüler**: Algoritma, negatif ağırlıklı döngüler içeren çizgelerde doğru sonuç vermez.
- **Büyük Çizgeler**: O(V3) zaman karmaşıklığı nedeniyle, çok büyük çizgelerde verimli değildir.

<!-- CONTEXT: Academic Sources and References for "Floyd-Warshall Algoritması" -->

## Academic Sources and References

1. GeekfforGeeks. (2024). Floyd Warshall Algorithm. https://www.geeksforgeeks.org/floyd-warshall-algorithm-dp-16/
2. Programiz. Floyd-Warshall Algoritm. https://www.programiz.com/dsa/floyd-warshall-algorithm
3. Takeuforward. (2023). Floyd Warshall Algorithm:G-42.