(Alıntıdır)
abstract public class Animal{ |
abstract public class Animal{ |
abstract public class Animal{ //Her iki hayvan objesinde olan talk metodu. //Abstract sınıflarda metodu tanımlamak zorunda değiliz //ancak eğer metodu aşağıdaki şekilde yazarsak //java derleyicileri bu sınıfın çocuklarında metod yazılmassa //hata verecektir. public abstract String talk(); } public class Cat extends Animal{ //Kedi sınıfı kediye has olan miyavlama //sesini döndürüyor bu şekilde farklı //bir görünüme sahip oluyor. public String talk(){ return "Miyav"; } } public class Dog extends Animal{ //Kedi sınıfı köpeğe has olan havlama //sesini döndürüyor bu şekilde farklı //bir görünüme sahip oluyor. public String talk(){ return "Hav hav"; } } |
Bu algoritmanın Türkçe anlamı ve amacı en kısa yolun bulunmasıdır.Bu ister bir ağ üzerinde veya iki şehir arasındaki mesafede olsun minimum mesafeyi bulmaya yarayan bir algoritmadır.Bu algoritmada
kullanılan mantık etiketleme mantığıdır.Yani bir başlangıç noktasından başlayıp sonra ayrılan yolların
ucundaki diğer bir eleman bir düğüm sayılır ve bu düğümlere kalıcı veya geçici gibi etiketler atanır.
Geçici olması demek daha kısa bir yol bulunduğunda iptal edilebilir olması kalıcı ise en kısa yolun olmasıdır.
#include<stdio.h>
#define MAX 10 //Maksimum düðüm sayýsý programda farklý yerlerdede kullanýlacak.
#define sonsuz 9999 // baþlangýçta düðümlere sonsuz distance deðeri verilir dijkstra algorithm.
struct dugum
{
int onceki;
int dist; /* o düðümün kaynaða olan minimum mesafesi */
int durum;
};
int adj[ MAX ][ MAX ];
int n;
void create_graph() //Graphý tanýmlayan adjacent matrixi
{
n = 5;
adj[1][2] = 4;
adj[2][1] = 4;
adj[2][3] = 3;
adj[3][2] = 3;
adj[3][4] = 4;
adj[4][3] = 4;
adj[1][4] = 8;
adj[4][1] = 8;
adj[4][5] = 7;
adj[5][4] = 7;
} /*SON*/
void display() { //Adjancent matrixi ekrana yazdýrma
int i, j;
for (i = 1; i <= n; i++)
{
for (j = 1; j <= n; j++)
printf("%3d", adj[i][j]);
printf("n");
}
} /*SON*/
int findpath(int s, int d, int path[ MAX ], int* sdist) {
struct dugum state[ MAX ];
int i, min, count = 0, current, newdist, u, v;
*sdist = 0;
/*Tüm düðümleri geçici temp e al */
for (i = 1; i <= n; i++)
{
state[i].onceki = 0;
state[i].dist = sonsuz;
state[i].durum = 0;
}
/*Source dugum kalýcý olmalý*/
state[s].onceki = 0;
state[s].dist = 0;
state[s].durum = 1;
/*Hedef bulunana kadar kaynak düðümden baþla*/
current = s;
while (current != d)
{
for (i = 1; i <= n; i++)
{
/*geçici komþu düðümleri kontrol et */
if (adj[current][i] > 0 && state[i].durum == 0)
{
newdist = state[current].dist + adj[current][i];
/*Kontrol*/
if (newdist < state[i].dist)
{
state[i].onceki = current;
state[i].dist = newdist;
}
}
} /*SON*/
/*Geçici düðümlerde minimum mesafesi olaný ara ve current düðüm yap*/
min = sonsuz;
current = 0;
for (i = 1; i <= n; i++)
{
if (state[i].durum == 0 && state[i].dist < min)
{
min = state[i].dist;
current = i;
}
} /*son*/
if (current == 0)
return 0;
state[current].durum = 1;
} /*son*/
/* hedef ile kaynak arasý yolu arraya ata */
while (current != 0)
{
count++;
path[count] = current;
current = state[current].onceki;
}
/*kaynak ile hedef arasýndaki mesafe hesapla*/
for (i = count; i > 1; i--)
{
u = path[i];
v = path[i - 1];
*sdist += adj[u][v];
}
return (count);
} /*SON*/
void main() {
int i;
int first, second;
int path[ MAX ];
int shortdist, count;
create_graph();
printf("Adjacency matrix :n");
display();
while (1)
{
printf("1.Dugumu giriniz(Cikmak icin 0 a basin) : ");
scanf("%d", &first);
printf("2.Dugumu giriniz(Cikmak icin 0 a basin) : ");
scanf("%d", &second);
if (first == 0 || second == 0)
break;
count = findpath(first, second, path, &shortdist);
if (shortdist != 0)
{
printf("En kisa mesafe (maliyet) : %dn", shortdist);
printf("En kisa yol : ");
for (i = count; i > 1; i--)
printf("%d->", path[i]);
printf("%d", path[i]);
printf("n");
}
else
printf("Bu iki dugum arasinda yol bulunmamaktadir.n");
} /*SON*/
} /*Main SON*/
Bu algoritmanın Türkçe anlamı ve amacı en kısa yolun bulunmasıdır.Bu ister bir ağ üzerinde veya iki
şehir arasındaki mesafede olsun minimum mesafeyi bulmaya yarayan bir algoritmadır.Bu algoritmada
kullanılan mantık etiketleme mantığıdır.Yani bir başlangıç noktasından başlayıp sonra ayrılan yolların
ucundaki diğer bir eleman bir düğüm sayılır ve bu düğümlere kalıcı veya geçici gibi etiketler atanır.
Geçici olması demek daha kısa bir yol bulunduğunda iptal edilebilir olması kalıcı ise en kısa yolun olmasıdır.
#include<stdio.h>
#define MAX 10 //Maksimum düðüm sayýsý programda farklý yerlerdede kullanýlacak.
#define sonsuz 9999 // baþlangýçta düðümlere sonsuz distance deðeri verilir dijkstra algorithm.
struct dugum
{
int onceki;
int dist; /* o düðümün kaynaða olan minimum mesafesi */
int durum;
};
int adj[ MAX ][ MAX ];
int n;
void create_graph() //Graphý tanýmlayan adjacent matrixi
{
n = 5;
adj[1][2] = 4;
adj[2][1] = 4;
adj[2][3] = 3;
adj[3][2] = 3;
adj[3][4] = 4;
adj[4][3] = 4;
adj[1][4] = 8;
adj[4][1] = 8;
adj[4][5] = 7;
adj[5][4] = 7;
} /*SON*/
void display() { //Adjancent matrixi ekrana yazdýrma
int i, j;
for (i = 1; i <= n; i++)
{
for (j = 1; j <= n; j++)
printf("%3d", adj[i][j]);
printf("\n");
}
} /*SON*/
int findpath(int s, int d, int path[ MAX ], int* sdist) {
struct dugum state[ MAX ];
int i, min, count = 0, current, newdist, u, v;
*sdist = 0;
/*Tüm düðümleri geçici temp e al */
for (i = 1; i <= n; i++)
{
state[i].onceki = 0;
state[i].dist = sonsuz;
state[i].durum = 0;
}
/*Source dugum kalýcý olmalý*/
state[s].onceki = 0;
state[s].dist = 0;
state[s].durum = 1;
/*Hedef bulunana kadar kaynak düðümden baþla*/
current = s;
while (current != d)
{
for (i = 1; i <= n; i++)
{
/*geçici komþu düðümleri kontrol et */
if (adj[current][i] > 0 && state[i].durum == 0)
{
newdist = state[current].dist + adj[current][i];
/*Kontrol*/
if (newdist < state[i].dist)
{
state[i].onceki = current;
state[i].dist = newdist;
}
}
} /*SON*/
/*Geçici düðümlerde minimum mesafesi olaný ara ve current düðüm yap*/
min = sonsuz;
current = 0;
for (i = 1; i <= n; i++)
{
if (state[i].durum == 0 && state[i].dist < min)
{
min = state[i].dist;
current = i;
}
} /*son*/
if (current == 0)
return 0;
state[current].durum = 1;
} /*son*/
/* hedef ile kaynak arasý yolu arraya ata */
while (current != 0)
{
count++;
path[count] = current;
current = state[current].onceki;
}
/*kaynak ile hedef arasýndaki mesafe hesapla*/
for (i = count; i > 1; i--)
{
u = path[i];
v = path[i - 1];
*sdist += adj[u][v];
}
return (count);
} /*SON*/
void main() {
int i;
int first, second;
int path[ MAX ];
int shortdist, count;
create_graph();
printf("Adjacency matrix :\n");
display();
while (1)
{
printf("1.Dugumu giriniz(Cikmak icin 0 a basin) : ");
scanf("%d", &first);
printf("2.Dugumu giriniz(Cikmak icin 0 a basin) : ");
scanf("%d", &second);
if (first == 0 || second == 0)
break;
count = findpath(first, second, path, &shortdist);
if (shortdist != 0)
{
printf("En kisa mesafe (maliyet) : %d\n", shortdist);
printf("En kisa yol : ");
for (i = count; i > 1; i--)
printf("%d->", path[i]);
printf("%d", path[i]);
printf("\n");
}
else
printf("Bu iki dugum arasinda yol bulunmamaktadir.\n");
} /*SON*/
} /*Main SON*/