Hill Climbing termasuk dalam metode Uninformed Search, ia menggunakan metode mencari nilai yang lebih baik dari sebelumnya, cara ini biasanya diterapkan pada tree.
Silahkan di lihat gambarnya.
Dari gambar di atas dapat kita simpulkan cara kerjanya, pertama kita tentukan dulu aturan(list) mana yang terbaik dan terburuknya. Gambar ini menentukan M-D-B-N-L-O sebagai prioritasnya.
Selanjutnya ketika kita memulai pencarian(dari root = S(start)), kita akan menentukan langkah selanjutnya dengan patokan aturan tersebut, hingga kita menemukan G(goal)nya.
Solusi ini jelas tidak akan optimal untuk mencari suatu solusi, tapi kita dapat "mengakali" nya dengan cara memperbanyak climbernya(startnya dari beberapa tempat), dengan memperbanyak climber kita dapat meningkatkan kemungkinan mendapatkan solusi terbaik.
Read More...
Jumat, 26 November 2010
Hill Climbing Search
Kamis, 25 November 2010
Depth First Search
Termasuk dalam metode Uninformed Search, berlawanan cara dengan metode Breadth First Search yang saya bahas sebelumnya.
Ini gambar animasinya.
Metode ini akan mencari dulu di satu sisi, hingga kedalaman yang paling jauh, lalu akan melakukan backtrack.
Keuntungan :
Kerugian :
Read More...
Breadth First Search
Metode pencarian ini merpakan metode Uninformed Search, metode ini mencari nilai terbaik dengan cara melihat per baris.
Silahkan melihat gambar berikut agar lebih jelas.
Dapat di lihat bahwa setiap akan turun, akan memeriksa anaknya, lalu di simpan.
Cara penyimpanan :
a
bc (node anak dari root)
cde (node c + node anak dari b)
defg (node anak dari b + node anak dari c)
dfgh (dst....*hingga ketemu goalnya.)
Keuntungan :
Kerugian :
Read More...
Rabu, 24 November 2010
Segmented Sieve of Eratosthenes
Segmented Sieve of Eratosthenes adalah pengembangan dari Sieve of Eratosthenes, bila bilangan prima yang di cari tidak di mulai dari angka 0.
Contohnya "Tuliskan bilangan Prima dari 999900000 sampai 1000000000" coba bayangkan kompleksitas nya kalau harus mulai dari 0. XD.
Ini source code upgrade an Sieve of Eratosthenes" saya :D
#include <iostream>
#include <math.h>
typedef long long LL;
using namespace std;
LL N,M;
bool Prima[1000000000];
int main()
{
cout<<"Masukan angka minimal bilangan prima = ";cin>>N;
cout<<"Masukan angka maximal bilangan prima = ";cin>>M;
for(LL i=N;i<M;i++)
Prima[i] = true;
cout<<"Bilangan Prima dari "<<N<<" - "<<M<<" adalah : ";
Prima[0] = false;
Prima[1] = false;
for(LL i=2;i<sqrt(M);i++)
for(LL j=N;j<M;j++)
if(Prima[j] && ((j/i)*i == j))
{
j += i;
while(j < M)
{
if(Prima[j])
Prima[j] = false;
j += i;
}
}
for(int i=N;i<M;i++)
if(Prima[i])
cout<<i<<endl;
return 0;
}
Read More...
Buble Sort
Buble adalah metode pengurutan paling simpel (menurut saya), mengecek apakah ada yang lebih besar atau tidak, lalu di tukar, tapi dengan kasus terburuk kompleksitasnya mencapai O(N2).
Ini ada contoh source code C++ saya
#include <iostream>
using namespace std;
int main()
{
int data[100],n;
cout<<"Berapa banyak data = ";cin>>n;
cout<<"Masukan data yang akan di sorting = ";
for(int i=0;i<n;i++)
cin>>data[i];
for(int i=0;i<n;i++)
for(int j=i;j<n;j++)
if(data[i] > data[j])
swap(data[i],data[j]);
for(int i=0;i<n;i++)
cout<<data[i]<<' ';
return 0;
}
Read More...
Html Code Converter
Ketika pertama kali "mempaste" kan source code ke blog, ada sesuatu yang aneh, apa yah ??? pas saya lihat - lihat dengan jelas, ternyata semua html code nya di convert otomatis...XD
Setelah cari - cari referensi untuk memasang code converter sendiri di blog, akhirnya ketemu juga :D, jadi ga perlu cari - cari web buat convert.
Ini dia....
Read More...
Merge Sort
Merge sort merupakan salah satu metode sorting yang paling stabil, kompleksitas nya juga O(n log n) untuk kasus terburuk dan terbaik sekalipun.
Merge sort menggunakan metode Divide and Conquer untuk menyelesaikan penyusunannya, jadi data akan di pecah - pecah menjadi sangat kecil dan di selesaikan satu per satu.
Ini ada suatu gambar yang saya dapatkan dari wikipedia, cukup untuk membuat kita mudah mengerti maksud dari sorting ini.
Sudah bisa mengerti gambar ini ??
Lalu bagaimana mengimplementasikan dalam sebuah program ?
Silahkan cek source code yang saya buat dengan C++
#include <iostream>
using namespace std;
int data[100];
void mergeSort(int awal, int mid, int akhir)
{
cout<<endl;
int temp[100], tempAwal = awal, tempMid = mid, i = 0;
while(tempAwal < mid && tempMid < akhir)
{
if(data[tempAwal] < data[tempMid])
temp[i] = data[tempAwal],tempAwal++;
else
temp[i] = data[tempMid],tempMid++;
i++;
}
while(tempAwal < mid) //kalau masih ada yang sisa
temp[i] = data[tempAwal],tempAwal++,i++;
while(tempMid < akhir)
temp[i] = data[tempMid],tempMid++,i++;
for(int j=0,k=awal;j<i,k<akhir;j++,k++) //mengembalikan ke array semula, tapi
cout<<data[k]<<' '<<temp[j]<<endl, data[k] = temp[j]; //sudah urut
}
void merge(int awal, int akhir) //membagi data secara rekursif
{
if(akhir-awal != 1)
{
int mid = (awal+akhir)/2;
merge(awal, mid);
merge(mid, akhir);
mergeSort(awal, mid, akhir);
}
}
int main()
{
int n;
cout<<"Masukan banya data = ";cin>>n;
cout<<"Masukan data yang akan di susun = ";
for(int i=0;i<n;i++)
cin>>data[i];
merge(0,n);
for(int i=0;i<n;i++)
cout<<data[i]<<' ';
return 0;
}
Read More...
Selasa, 23 November 2010
Daftar Algoritma
Algoritma adalah dasar dari pemrograman, jika anda sudah cukup mahir di algoritma, untuk "berekspresi" di berbagai bahasa pemrograman sangatlah mudah...
Ini ada daftar algoritma yang saya dapatkan dari wikipedia.
Sebisa mungkin saya akan men-translate-kan dan menringkasnya menjadi mudah di mengerti, karena saya lihat tutorial tentang algoritma berbahasa indonesia masih sangat sedikit sekali. :D
Read More...
Senin, 22 November 2010
Sieve Of Eratosthenes
Sieve of Erastosthenes adalah suatu Number Theoritic Algorithm khusus untuk mencari bilangan prima.
Algoritma ini merupakan yang tercepat di bidangnya, karena menggunakan list data untuk menyimpan bilangan prima yang sudah di temukan dan menghapus bilangan kelipatan prima tersebut.
Contoh : 3 adalah bilangan prima, kelipatan 3 pasti bukan bilangan prima, jangan tanya kenapa !! :D
dah ngerti kan ???
ini ada contoh source code yang saya buat :D
#include <iostream>
#include <math.h>
typedef long long LL;
using namespace std;
LL N;
bool Prima[1000000000];
int main()
{
cout<<"Masukan angka maximal bilangan prima yang anda inginkan = ";cin>>N;
for(LL i=0;i<N;i++) // semua di set true dulu.
Prima[i] = true;
Prima[0] = false;
Prima[1] = false;
cout<<"Bilangan Prima dari 1 - "<<N<<" adalah : "<<endl;
for(LL i=2*2;i<N;i+=2) //bilangan prima pasti bukan bilangan genap,
Prima[i] = false; //kecuali 2. Jadi kelpatan 2 di buang dulu.
for(LL i=3;i<sqrt(N);i+=2) //disini langsung mencari bilangan ganjil saja.
if(Prima[i])
for(LL j=i*i;j<N;j+=i)
Prima[j] = false;
for(LL i=2;i<N;i++)
if(Prima[i])
cout<<i<<endl;
return 0;
}
Read More...
Senin, 25 Oktober 2010
Palindrom
Palindrom adalah sebuah kata yang jika di baca dari huruf paling belakang ke depan akan sama dengan bila di baca dari depan ke belakang.
contohnya :
1. asdsa adalah palindrom
2. asdasd bukanlah palindrom
maka source code nya adalah seperti berikut
#include <iostream>
#include <string>
using namespace std;
bool cekPalindrom(string pal)
{
string cek;
for(int i=0,j=pal.length()-1;i<pal.length();i++,j--)
cek[j] = pal[i];
for(int i=0;i<pal.length();i++)
if(cek[i] != pal[i])
return false;
return true;
}
int main()
{
string pal;
cout<<"Masukan Kata yang akan di cek = ";cin>>pal;
if(cekPalindrom(pal))
cout<<"Kata "<<pal<<" adalah Palindrom.";
else
cout<<"Kata "<<pal<<" bukan Palindrom.";
return 0;
}
Read More...
Minggu, 24 Oktober 2010
SRM 485 div 2
Oke gw akan membahas tentang soal Single Round Match (SRM) kemarin, tapi yang divisi 2 tipe 250.
Soal nya bisa di lihat di sini.
SRM 485 div 2 250 coba di baca dulu.
Inti dari soal itu adalah carilah angka terbesar dengan angka '9' terbanyak.
#include <iostream>
using namespace std;
class MicrowaveSelling {
public :
int mostAttractivePrice(int min, int max)
{
int nine=0,max9=0,temp=0,j;
for(int i=min;i<=max;i++)
{
nine = 0; j=i;
while(true)
{
//menghitung berapa banyaknya angka 9
if(j%10 == 9) nine++,j/=10;
else break;
}
if(nine >= max9) max9 = nine, temp = i;
}
return temp;
}
} test;
int main()
{
cout << test.mostAttractivePrice(460,680) << endl;
return 0;
}
yang bikin sulit di percaya adalah....
seorang mahasiswa Universitas Tokyo dengan nickname ah_xiaodao menyelesaikan soal ini dalam waktu 41 detik.....
mungkin lain waktu saya juga bisa menyelesaikan dengan waktu segitu....amin.
Read More...
Menyusun segitiga bintang dengan C++
Tugas ini biasa nya di berikan kepada anak informatika semester 1, jadi saya bantu yah....
previewnya seperti ini...
n=3
*
**
***
n=5
*
**
***
****
*****
kita mulai dari algoritmanya yah....
1. mulai
2. input n
3. looping i=1 to n
4. looping lagi dari j=0 to i
5. cetak '*' sebanyak j
6. ganti baris
7. lanjutkan j
8. lanjutkan i
9. selesai.
#include <iostream>
using namespace std;
int main()
{
int n;
cout<<"Masukan tinggi bintang = ";cin>>n;
for(int i = 0; i < n; i++)
{
for(int j = 0; j <= i; j++)
cout<<'*';
cout<<endl;
}
return 0;
}
semoga bermanfaat :D
Read More...
Selasa, 19 Oktober 2010
TopCoder
TopCoder adalah suatu situs perlombaan, bersistem rangking dan lombanya adalah coding.
Soal - soalnya sangat menantang, ada yang soal turnamen antar negara, lomba antar universitas(luar negeri) dan yang pasti sulit + membingungkan juga.
Semoga anak - anak Indonesia banyak yang bermain di TopCoder daripada main game online yang notabene merugikan.
di www.topcoder.com
So, Ayo Gabung di TopCoder !!
Read More...
Rabu, 13 Oktober 2010
3 Idiots
Kemaren gw habis lihat 3 idiot...
Walau film ini udah lama banget di putar di bioskop - bioskop dan di TV Nasional(Maybe...) akhirnya gw dapet kesempatan buat nonton film itu, film itu sendiri dah mengendap lama di hardisk gw (sampai bad sector kali :D).
3 Idiots menceritakan tentang 3 orang anak muda india yang sedang kuliah di universitas nomor 1 di tempatnya (ICE kalau ga salah :D)...
Gw benar - benar rekomendasiin film ini untuk pelajar/mahasiswa (harus nonton), sarat dengan makna kehidupan, kerasnya dunia pendidikan di india, kita mestinya bersyukur di Indonesia sendiri masih ringan - ringan saja persaingannya.
Satu hal yang dapat gw petik dari film itu adalah kata - kata si "Aamir Khan" yang berkata "All is well, all is well" untuk menenangkan hatinya yang sedang tertekan.
Gw sendiri kasih rating 9/10 deh...jadi nonton yah..:D
Read More...
Sabtu, 09 Oktober 2010
AWT dan SWING
Siapa yang ga tau kehebatan java ?
Dengan slogan "Write Once, Run Everywhere", dokumentasi API yang baik (rapi dan lengkap) , Java menjadi idola di bidang pemrograman mulai dari yang skala kecil sampai enterprise.
Walau berat banget jalaninnya, apalagi kalau pake IDE Netbeans, tapi jujur Java merupakan bahasa yang gw sukai ketika membuat aplikasi berbasis GUI.
Di Java kita pasti akan sering berurusan dengan AWT dan SWING, apa sih bedanya ??
AWT adalah tampilan dasar dari setiap OS yang kamu gunakan.
Jadi setiap kita mendeklarasikan button, textfield akan sama persis dengan apa yang ada di OS kamu.
Yang jadi kendala adalah, bila terjadi bug di salah satu OS, bug tersebut akan menjadi sebuah bug yang lain lagi di OS yang lain, benar - benar ga bisa di bayangkan seberapa repotnya.
Saat itu slogan Java di plesetkan menjadi "Write Once, Debug Everywhere".
Maka hadirlah SWING yang menawarkan tampilan yang lebih bagus, ia tidak berdasarkan pada OS yang di diaminya.
Yang perlu di garis bawahi adalah SWING bukanlah pengganti AWT, karena SWING sendiri tidak bisa berdiri sendiri, ia tetap membutuhkan class - class seperti Event Handling dari AWT.
Sayangnya SWING menjadi lebih lambat dari AWT karena ia menggunakan metode "Paint".
Read More...
Delphi For Dummies
Beberapa hal penting yang perlu di perhatikan ketika kamu belajar Delphi....
Karena delphi berbasis GUI, maka ketika membuat program anda akan lebih butuh belajar syntax daripada belajar algoritmanya...
Belajar delphi gampang - gampang susah juga (gw ga pernah maen GUI sih --")
Ternyata, delphi ini di bangun dengan menggunakan bahasa PASCAL.
Itu baru gw sadari karena syntaxnya mirip banget sama pascal.
Kelebihan Bahasa Delphi adalah :
1. easy to learn karena di GUI
2. punya Object Inspector (untuk properties sebuah item)
3. backgroundnya tembus pandang, keren banget.
Kekurangannya :
1. GUI dengan delphi terkesan jadul(jaman dulu) banget
2. delphi tidak case sensitive, itu cukup membuat bingung (bagi saya)
overall delphi cukup powerfull kalau di bandingin sama yang tidak berbasis GUI (ya iya lah... :D)
nb : saya nulis ini masih 2 x nyobain delphi(berarti dummie juga donk) hehehe....
*** = menurut saya yah, tapi itu belum saya tes sendiri ketika menulis ini, ntar saya edit lagi kalau saya udah menemukan kelebihan lainnya.
Read More...
Jumat, 08 Oktober 2010
I'm Come Back !!!
Waduh.....
udah lama banget ga posting, gara - gara kesibukan yang ada (cari alesan).....heheh...:D
mulai saat ini gw bakal rajin posting...suer ! ^^v
mungkin tiap 1 minggu sekali tapi gw bakal pantau blog ini terus...
kemaren gw baru mulai coba - coba ngedit tampilan blog ini (abis dapet ilmu dikit waktu kuliah) hehehe....
gw juga bakal mengkategorikan semuanya sesuai dengan beberapa macam jalur di IT, contohnya programming, networking...mungkin nanti bakal saya tambahin lagi desain grafis (klo ga keburu + ga males :D)..
so, ikutin terus yah blog gw....Tq..!! :-h
Read More...
Sabtu, 20 Februari 2010
Komentar, Identifier dan Tipe data
Contoh :
// ini adalah program untuk menambahkan value
dan
/* ini adalah program untuk
menambahkan
value */.
syarat-syaratnya :
- harus berawalan karakter huruf, selanjutnya terserah
- tidak boleh menggunakan karakter-karakter ( @, ?, !, $, #, dll)
- tidak boleh menggunakan kata kunci( cout, cin, int, dll)
- sebaiknya berhubungan dengan penggunaan
merupakan jenis identifier yang bersifat konstan/tetap. Bila di dalam program penggunaannya adalah agar nilai suatu konstanta itu tidak dapat di ubah.
-Menggunakan Prepocessor Directive #define
Contoh :
#define phi 3.14
-Menggunakan Keyword const
Contoh :
const float phi = 3.14;
- VARIABEL
tipe_data nama_variabel;
--Global--> Var. yang dapat di akses oleh seluruh lingkungan dalam program
--Lokal--> Var. yang hanya dapat di akses di tempat tertentu dalam program
--Static--> Var. yang menempati memori komputer secara permanen
--register--> Var. yang hanya di simpan di register CPU.
Macam-macamnya :
- DASAR
- Tipe Bilangan Bulat
- tiny int ( 1 byte )
- short int ( 2 byte )
- int ( 4 byte )
- long int ( 8 byte )
Contoh :
unsigned tiny int nama_var;
- Tipe Bilangan Desimal
- float ( 6 digit presisi )
- double ( 10 digit presisi )
- long double ( 10 digit presisi )
- Tipe Logika
- true (1)
- false (0)
- Tipe Karakter
- char ( 1 byte )
- Array
- String
- Struktur
- Enumerasi
About Me
Saya membuat Blog ini karena
1. Terinspirasi seorang teman yang sudah mempunyai blog (keren banget)
2. Ingin berbagi ilmu dengan orang lain yang lebih menguasai tentang apa yang saya bahas, dan untuk memperkenalkan kepada orang-orang yang belum mengetahui atau tidak menguasainya (klo isa lebih banyak yang ngajarin aq :p)
3. Masa anak infor ga punya blog....
4. Yo pokok e pengen ae....:D
Masa kecil saya, saya habiskan di kota Jombang TKK, SDK, SMPK Petra Jombang lalu berlanjut ke SMAN 2 Jombang nothing special.
Saya sekarang sedang menempuh pendidikan di UNTAG(Universitas Tujuh Belas Agustus) Surabaya dan mengambil jurusan Teknik Informatika(malu klo ga punya blog...hahaha....).
Saya sebenanya ga seberapa bisa algoritma atau programming.....baru mulai belajar pas masuk semester 1.....kayak nya terlambat banget...pasti kalah start sama yang uda ada pelajarannya di SMA....tapi mending terlambat daripada nggak sama sekali...nothing to lose ae lah.....
Jadi klo ada kesalahan harap di beritahu dan maklumi, coz saya juga masih belajar ^^v
Pengenalan C++
Adapun urutannya :
- Bahasa Tingkat Tinggi
Ada, Modula-2, Pascal, Cobol, Fortran, BASIC
- Bahasa Tingkat Menengah
Java, C++, C, FORTH
- Bahasa Tingkat Rendah
Macro-Assembler, Assembler
ditulis berurutan dengan maksud, misal : bahasa C lebih sulit dipahami daripada C++, sedang Bahasa FORTH lebih susah daripada C.
Secara syntax Bahasa C dan C++ banyak kesamaan, karena C++ adalah upgrade-an dari Bahasa C. Yang membuatnya keduanya berbeda adalah C++ adalah berbasis OOP (Object Oeriented Programming) yang disuatu saat nanti mungkin juga akan di jelaskan di Blog ini (tapi ga tau kapan...ho3...).