Çizge Algoritmaları
Çizge algoritmaları, graf teorisi temelinde çizgeler üzerinde çalışan algoritmalardır. Çizgeler, düğümler (noktalar) ve bu düğümleri birbirine bağlayan kenarlardan (çizgilerden) oluşur.
Bu algoritmalar, çizgelerin özelliklerini ve ilişkilerini analiz ederek, çeşitli problemleri çözmekte kullanılmaktadır.
Aşağıda, yaygın olarak kullanılan çizge algoritmalarından bazıları verilmiştir:
- Depth-First Search (DFS): Derinlik öncelikli arama algoritmasıdır. DFS, verilen bir çizgedeki düğümleri ziyaret etmek için kullanılır.
- Breadth-First Search (BFS): Genişlik öncelikli arama algoritmasıdır. BFS, komşulara sırayla ziyaret eder.
- Dijkstra'nın Algoritması: Dijkstra algoritması, bir çizgedeki düğümler arasındaki en kısa yolu bulmak için kullanılır.
- Bellman-Ford Algoritması: Negatif ağırlıklı kenarlar içeren çizgelerde de çalışabilen bir en kısa yol algoritmasıdır.
- Prim Algoritması: Bir çizgedeki minimum ağıcı bulmak için kullanılır.
- Kruskal'ın Algoritması: Minimum ağıcı bulmaya yönelik bir algoritmadır.
- Topolojik Sıralama: Çizgenin düğümlerini sıralamak için kullanılan bir algoritmadır.
Bu çizge algoritmaları, farklı problemleri çözmek için kullanılabilir ve çizge teorisinde temel olarak kabul edilirler.
Depth-First Search (DFS)
Depth-First Search (DFS), graf gezinme algoritmasıdır. Bu algoritma, bir düğümün tüm alt düğümlerini ziyaret etmeden önce derinlemesine gitmeyi tercih eder. Yani, başlangıç düğümünden komşu düğümlere gitmek yerine, başlangıç düğümüne bağlı tüm düğümlere derinlemesine iner.
DFS algoritması, öncelikle labirent gibi yapılarındaki yol bulma problemlerinde kullanılır.
Görselleştirilmiş bir örnek şu şekildedir:
Bu örnekte, DFS algoritması 1 numaralı düğümden başlar...
Breadth-First Search (BFS)
Breadth-First Search (BFS), bir çizgenin gezilmesi için kullanılan bir algoritmadır. Bu algoritma, çizgede verilen bir başlangıç düğümünden başlayarak...
1
/ \
2 3
/ \ \
4 5 6
Başlangıç düğümü olarak 1 seçildiğinde, BFS aşağıdaki adımları takip eder:
- Başlangıç düğümü 1 işaretlenir ve kuyruğa eklenir.
- Kuyruktan 1 çıkarılır ve işlenir.
- 1'in doğrudan bağlantısı olan 2 ve 3 işaretlenir ve kuyruğa eklenir.
- ...
BFS algoritmasının görselleştirilmesi için aşağıdaki örneği inceleyebilirsiniz:
Dijkstra Algoritması
Dijkstra algoritması, bir ağırlıklı çizgedeki bir kaynak düğümden diğer tüm düğümlere en kısa yolu bulmak için kullanılan bir algoritmadır...
Dijkstra algoritması, minimum mesafeyi bulur ve aynı zamanda en kısa yolun nasıl bulunacağını gösterir.
Dijkstra Algoritması'nın çalışma prensibini gösteren bir görselleştirme aşağıdaki şekildedir:
Bellman-Ford Algoritması
Bellman-Ford Algoritması, tek kaynak en kısa yol problemi için kullanılan bir çizge algoritmasıdır. Bu algoritma, grafikteki tüm düğümlere en kısa yolu bulur...
Bu video Bellman-Ford algoritmasının nasıl çalıştığını açıklayan bir animasyon içermektedir: [https://www.youtube.com/watch?v=obWXjtg0L64](https://www.youtube.com/watch?v=obWXjtg0L64)
Prim's Algoritması
Prim algoritması, bir ağırlıklı çizgede minimum ağırlıklı ağaç oluşturmak için kullanılan bir algoritmadır...
#include <stdio.h>
#include <limits.h>
#define V 5
...
Kruskal Algoritması
Kruskal algoritması, en küçük ağırlıklı kenardan başlayarak ağacın oluşmasını sağlayan bir ağaç oluşturma algoritmasıdır.
Ayrık kümeleri birleştirirken dikkatli olunmalıdır. Her yeni eklenen kenarın farklı ayrık kümelerdeki düğümleri birleştirdiğinden emin olun.
#include <stdio.h>
#include <stdlib.h>
#define MAX_EDGES 1000
...
Topolojik Sıralama
Topolojik Sıralama, bir çizgenin düğümlerini belli bir sıraya göre sıralamak için kullanılan bir algoritmadır...
#include <stdio.h>
#define MAX 100
...