Algoritma Djikstra

  • Algoritma Djikstra

Algoritma Dijkstra diterapkan untuk mencari lintasan terpendek pada graf berarah. Namun, algoritma ini juga benar untuk graf tak berarah. Algoritma Dijkstra mencari lintasan terpendek dalam sejumlah langkah. Algoritma ini menggunakan prinsip greedy. Prinsip greedy pada algoritma dijkstra menyatakan bahwa pada setiap langkah kita memilih sisi yang berbobot minimum dan memasukannya dalam himpunan solusi.

  • Penerapan Algoritma Djikstra pada Jaringan Komputer

Jaringan komputer dapat dimodelkan sebagai sebuah graf, dengan setiap simpul menyatakan sebuah komputer/router dan sisi di dalam graf menyatakan saluran komunikasi (sering disebut link). Setiap sisi mempunyai label nilai ( yang disebut bobot). Bobot tersebut dapat menyatakan jarak geografis(dalam km), kecepatan transfer data, waktu pengiriman).

Contoh :

Node awal 1, Node tujuan 5. Setiap edge yang terhubung antar node dan telah diberi nilai

contoh

Dijkstra melakukan kalkulasi terhadap node tetangga yang terhubung langsung dengan node keberangkatan (node 1), dan hasil yang didapat adalah node 2 karena bobot nilai node 2 paling kecil dibandingkan nilai pada node lain, nilai = 7 (0+7).

heem

Node 2 diset menjadi node keberangkatan dan ditandai sebagi node yang telah terjamah. Dijkstra melakukan kalkulasi kembali terhadap node-node tetangga yang terhubung langsung dengan node yang telah terjamah. Dan kalkulasi dijkstra menunjukan bahwa node 3 yang menjadi node keberangkatan selanjutnya karena bobotnya yang paling kecil dari hasil kalkulasi terakhir, nilai 9 (0+9).

hiiii

Perhitungan berlanjut dengan node 3 ditandai menjadi node yang telah terjamah. Dari semua node tetangga belum terjamah yang terhubung langsung dengan node terjamah, node selanjutnya yang ditandai menjadi node terjamah adalah node 6 karena nilai bobot yang terkecil, nilai 11 (9+2).

jijique

Node 6 menjadi node terjamah, dijkstra melakukan kalkulasi kembali, dan menemukan bahwa node 5 (node tujuan ) telah tercapai lewat node 6. Jalur terpendeknya adalah 1-3-6-5, dan niilai bobot yang didapat adalah 20 (11+9). Bila node tujuan telah tercapai maka kalkulasi dijkstra dinyatakan selesai.

dada

Contoh Soal Algoritma Djikstra :

  1. Node awal A, Node tujuan H. Setiap edge yang terhubung antar node dan telah diberi nilai

dd

2. Node awal V1, Node tujuan V5. Setiap edge yang terhubung antar node dan telah diberi nilai

hih

 

 

 

Bilangan Matematika Diskrit

Bilangan adalah suatu konsep ilmu matemaika yang digunakan untuk pencacahan dan  pengukuran. Dan semua bilangan meliputi bilangan nol, bilangan negatif,bilangan rasional,bilangan irasional, dan bilangan kompleks.

MACAM MACAM BILANGAN :

  • Bilangan asli : yaitu bilangan yang dimulai dari angka 1 dan seterusnya menuju ke bilangan positif. Contoh : {1,2,3,4,5,6,7,8,9,10,…}
  • Bilangan cacah : yaitu bilangan asli yang di depan angka 1 terdapat angka 0. Contoh {0,1,2,3,…}
  • Bilangan Negatif : yaitu bilangan negatif yang dimuai dari angka -1 dan seterusnya negatif. Contoh : {…,-5,-4,-3,-2,-1}
  • Bilangan bulat : yaitu semua bilangan dari yeng negative,nol,dan posutuf menjadi satu. Contoh {…,-2,-1,0,1,2,…}
  • Bilangan pecahan desimal : yaitu bilangan yang dimisalkan seperti x/y x dan y adalah bilangan bulat, x sebagai pembilang dan y sebagai penyebut. Contoh : {1/3, 2/3, 1/8, 5/8,…}
  • Bilangan rasional : yaitu bilangan yang dimusalkan x/y dimana x dan y tidak sama dengan 0. Contoh : {-3,-2,3/2,4}
  • Bilangan Irrasional : yaitu bilangan yang tidak bisa di bagi. Contoh : {akar 2,akar 3, akar 5,…}
  • Bilangan imajiner : yaitu bilangan bilangan khayal. Contoh :{akar-4, akar-3, akar-6, akar-2, akar-1,…}
  • Bilangan Riil : yaitu bilangan yang bisa di tulis secara decimal : {5/8, Log10}

Algoritma Menghitung Volume Tabung

MAIN


Judul    : Membuat Program Menghitung Volume tabung

Kamus  :

tinggi  ← integer /* Jari – Jari Tabung */

jari       ← integer /* Jari – Jari Tabung */

fungtions hitung (tinggi ← integer, jari ←int) ←integer /*Ini adalah sebuah fungsi yang digunnakan untuk menghitung Volume tabung  */

Deskripsi =

Input tinggi tabung
Input jari

hitung(tinggi,jari); /* Untuk Memanggil Fungsi */

end


Fungsi


fungtions hitung (tinggi ← integer, jari ←int) ←integer

{

Kamus :

volume

Deskripsi

volume ← 3.14 * jari2 * jari2 * tinggi

return volume;

}

selamat Mencoba 😀

Membuat Prosedur Untuk Mengecek Status Segitiga

Prosedur jenis_apa(sisi1,sisi2,sisi3 ← integer)

{

Deskripsi

if (sisi1=sisi2 and sisi1=sisi3)

then

write”Segitiga Sama Sisi”

 

else if (sisi1=sisi2 or sisi1=sisi2)

then

if (sisi1!=sisi2 or sisi1!=sisi3)

then

write”Segitiga Sama Kaki”

end if

else

write “Segitiga Sembarang”

end if

end if

end

}

Selamat Mencoba 😀

Mengkonversi Nilai Angka Ke Huruf

Prosedur konversi(total ← integer  )

{

If (total>85)and (total<100)

Then Write “ Nilai A ”

Else if (total>75)and (total<84)

Then Write “ Nilai B ”

Else if (total>60)and (total<74)

Then Write “ Nilai C ”

Else if (total>50)and (total<59)

Then Write “ Nilai D ”

Else if (total>0)and (total<49)

Then Write “ Nilai E ”

End if

End if

End if

End if

End if

End

}

Selamat Mencoba 😀

Algoritma Prosedure Mengkonversi Jam Ke Detik atau Sebaliknya

Main

Kamus :

dari <- char /* Mau dari jam ke detik atau sebaliknya*/

Prosedure konversi(dari <- char);

Deskripsi :

input dari;

konversi(dari);

end

Prosedure konversi(dari <- char)

{

Kamus :

hasil,jam detik <- real

Deskripsi :

if (dari=’jam’)

then

input detik;

hasil <- detik x 0,000278

write “Detik Ke Jam Adalah %f “,hasil;

else if (dari=’detik’)

then

input jam;

hasil <- jam x 3600

write “Jam ke Detik Adalah %f “,hasil;

else

write “Salah input woy”;

end if

end if

end if

}

Selamat Mencoba 😀

Contoh Konversi Char to Integer

procedure char_ke_int()

{

Kamus :

charakter<–char

a<–integer

Deskripsi :

if (charakter=’0’) then a=0

else if (charakter=’1’) then a=1

else if (charakter=’2’) then a=2

else if (charakter=’3’) then a=3

else if (charakter=’4’) then a=4

else if (charakter=’5’) then a=5

else if (charakter=’6’) then a=6

else if (charakter=’7’) then a=7

else if (charakter=’8’) then a=8

else if (charakter=’9’) then a=9

end if

end if

end if

end if

end if

end if

end if

end if

end if

 

}

Selamat Mencoba 😀

Konversi (Angka to Text) atau Konversi Rupiah

#include <stdio.h>
#include <conio.h>

void terbilang (long int x);

int main()
{
long jumUang;

printf(“Masukan Jumlah Uang : “); scanf(“%ld”,&jumUang);
terbilang(jumUang); printf(“Rupiah”);
}

void terbilang(long int x){
//algoritma
if(x==1){
printf(“Satu “);
}else if(x==2){
printf(“Dua “);
}else if(x==3){
printf(“Tiga “);
}else if(x==4){
printf(“Empat “);
}else if(x==5){
printf(“Lima “);
}else if(x==6){
printf(“Enam “);
}else if(x==7){
printf(“Tujuh “);
}else if(x==8){
printf(“Delapan “);
}else if(x==9){
printf(“Sembilan “);
}else if(x==10){
printf(“Sepuluh “);
}else if(x==11){
printf(“Sebelas “);
}else if(x>=12&&x<=19){
terbilang(x%10);
printf(“Belas “);
}else if(x>=20&&x<=99){
terbilang(x/10);
printf(“Puluh “);
terbilang(x%10);
}else if(x>=100&&x<=199){
printf(“Seratus “);
terbilang(x-100);
}else if(x>=200&&x<=999){
terbilang(x/100);
printf(“Ratus “);
terbilang(x%100);
}else if(x>=1000&&x<=1999){
printf(“Seribu “);
terbilang(x-1000);
}else if(x>=2000&&x<=999999){
terbilang(x/1000);
printf(“Ribu “);
terbilang(x%1000);
}else if(x>=1000000&&x<=999999999){
terbilang(x/1000000);
printf(“Juta “);
terbilang(x%1000000);
}

Next Day

int d, m, y, nd, nm, ny;  /* y=year, m = month, d=day,ny=nextyear, nm=nextmonth, nd=nextday. */

int main()
{

y,m,d <- integer
printf(“Enter the year: “);
scanf(“%d”, &y);
printf(“\nEnter the month: “);
scanf(“%d”, &m);
printf(“\nEnter the date: “);
scanf(“%d”, &d);
tanggal(y,m,d);
}

int tanggal(y,m,d)
{
printf(“\nTanggal Sekarang: %d/%d/%d”, d, m, y);
if (m%2!=0 && m>=1 && m<=7 && d==31)
{
nd=1;
nm=m+1;
ny=y;
}
else if (m%2==0 && m>=8 && m<12 && d==31)
{
nd=1;
nm=m+1;
ny=y;
}
else if (m%2==0 && m>=4 && m<=6 && d==30)
{
nd=1;
nm=m=1;
ny=y;
}
else if (m%2!=0 && m>=9 && m<=11 && d==30)
{
nd=1;
nm=m+1;
ny=y;
}
else if (m==2 && y%4==0 && d==29)
{
nd=1;
nm=m+1;
ny=y;
}
else if (m==2 && y%4!=0, d==28)
{
nd=1;
nm=m+1;
ny=y;
}
else if (m==12 && d==31)
{
nd=1;
nm=1;
ny=y+1;
}
else
{
nd=d+1;
nm=m;
ny=y;
}
printf(“\n\nTanggal Berikutnya:\t%d/%d/%d\n”, nd, nm, ny);
}

Selamat Mencoba 😀