Saturday, 31 December 2011
Friday, 30 December 2011
Algorithm Breath First Search
Algorithm Maze (maze, start)
Find the goal in a maze using a queue (breadth first search)
create an empty queue named Q;
enqueue start in Q;
while Q is not empty do
current dequeue from Q;
if current is the goal then
output “Success!”;
Q empty queue; {to end the loop}
else if current is not a wall and current is not marked as visited then
mark current as visited;
enqueue in Q the point to the right of current;
enqueue in Q the point to the left of current;
enqueue in Q the point above current;
enqueue in Q the point below current;
end if
end while
Find the goal in a maze using a queue (breadth first search)
create an empty queue named Q;
enqueue start in Q;
while Q is not empty do
current dequeue from Q;
if current is the goal then
output “Success!”;
Q empty queue; {to end the loop}
else if current is not a wall and current is not marked as visited then
mark current as visited;
enqueue in Q the point to the right of current;
enqueue in Q the point to the left of current;
enqueue in Q the point above current;
enqueue in Q the point below current;
end if
end while
Algorithm Depth First Search
Algorithm Maze (maze, start)
Find the goal in a maze using a stack (depth first search)
create an empty stack named S;
push start onto S;
while S is not empty do
current pop from S;
if current is the goal then
output “Success!”;
S empty stack; {to end the loop}
else if current is not a wall and current is not marked as visited then
mark current as visited;
push onto S the point to the right of current;
push onto S the point to the left of current;
push onto S the point above current;
push onto S the point below current;
end if
end while
Find the goal in a maze using a stack (depth first search)
create an empty stack named S;
push start onto S;
while S is not empty do
current pop from S;
if current is the goal then
output “Success!”;
S empty stack; {to end the loop}
else if current is not a wall and current is not marked as visited then
mark current as visited;
push onto S the point to the right of current;
push onto S the point to the left of current;
push onto S the point above current;
push onto S the point below current;
end if
end while
Thursday, 29 December 2011
İkili Arama Ağacı (Binary Search Tree)
İkili ağaçların (Binary Tree) özel bir hali olan ikili arama
ağaçlarında, düğümlerde duran bilgilerin birbirine göre küçüklük
büyüklük ilişkisi bulunmalıdır. Örneğin tam sayılardan(integer) oluşan
veriler tutulacaksa bu verilerin aralarında küçük-büyük ilişkisi
bulunmaktadır.
İkili arama ağacı, her düğümün solundaki koldan ulaşılabilecek bütün verilerin düğümün değerinden küçük, sağ kolundan ulaşılabilecek verilerin değerinin o düğümün değerinden büyük olmasını şart koşar.
Örneğin yukarıda bir ikili arama ağacı tasvir edilmiştir. Bu ağaçta dikkat edilecek olursa kökün solunda bulunan bütün sayılar kökten küçük ve sağında bulunan bütün sayılar kökten büyüktür.
İkili arama ağacına bu kurala uygun olarak ekleme çıkarma veya silme işlemleri yapılabilir. Ancak yapılan her işlemden sonra ikili arama ağacının yapısı bozulmamış olmalıdır.
İkili arama ağacında arama işlemi:
Yukarıda da anlatıldığı üzere ağacın üzerinde duran verilerin özel bir şekilde sıralı bulunması gerekir. Buna göre herhangi bir değeri arayan kişi ağacın kök değerine bakarak aşağıdaki 3 eylemden birisini yapar:
İkili arama ağacı, her düğümün solundaki koldan ulaşılabilecek bütün verilerin düğümün değerinden küçük, sağ kolundan ulaşılabilecek verilerin değerinin o düğümün değerinden büyük olmasını şart koşar.
Örneğin yukarıda bir ikili arama ağacı tasvir edilmiştir. Bu ağaçta dikkat edilecek olursa kökün solunda bulunan bütün sayılar kökten küçük ve sağında bulunan bütün sayılar kökten büyüktür.
İkili arama ağacına bu kurala uygun olarak ekleme çıkarma veya silme işlemleri yapılabilir. Ancak yapılan her işlemden sonra ikili arama ağacının yapısı bozulmamış olmalıdır.
İkili arama ağacında arama işlemi:
Yukarıda da anlatıldığı üzere ağacın üzerinde duran verilerin özel bir şekilde sıralı bulunması gerekir. Buna göre herhangi bir değeri arayan kişi ağacın kök değerine bakarak aşağıdaki 3 eylemden birisini yapar:
- Aranan sayı kökteki değere eşittir -> Aranan değer bulunmuştur
- Aranan sayı kökteki değerden küçüktür -> Kökün sol kolu takip edilir
- Aranan sayı kökteki deüerden büyüktür -> Kökün sağ kolu takip edilir
dugum * ara(dugum *kok, int deger){
if(deger == kok->veri){
return kok;
}
else if(deger > kok->veri ){
if(kok->sag != NULL) return ara(kok->sag, deger); else return NULL;
}
else{
if(kok->sag != NULL) return ara(kok->sol,deger); else return NULL
}
}
Subscribe to:
Posts (Atom)