Jumat, 17 Juni 2011

algoritma permutasi secara iterasi

untuk artinya apa itu permutasi, kunjungi wikipedia saja, hehehe

nah untuk algoritma mencari permutasi secara iterasi mungkin kurang lebih seperti ini

pertama kita sebut istilah "mobile" adalah status untuk kondisi yang memungkinkan elemen-elemen yang dicari permutasinya masih bisa bergerak. nah kondisi dimana bisa bergerak akan dijelaskan sebagai berikut

pertama, urutkan elemen-elemen yang akan dicari permutasinya dari kecil ke besar
kemudian beri tanda panah ke kiri untuk masing masing elemen

nah dari sini, yang disebut elemen mobile adalah elemen terbesar yang memiliki tanda panah yang tanda panah tersebut menghadap ke elemen yang lebih kecil. ELEMEN TERBESAR YANG TANDA PANAHNYA MENGHADAP KE ELEMEN YANG LEBIH KECIL DARINYA.

nah

untuk melakukan pencarian permutasi sampai akhir, bisa menggunakan urut-urutan langkah seperti ini

1. masukkan kondisi urutan elemen saat ini ke daftar hasil permutasi
2. cek apakah ada elemen yang mobile, jika tidak ada, berarti sudah tidak ada lagi permutasi
3. jika ada, tukar elemen mobile tersebut dengan elemen yang ditunjuk oleh tanda panahnya, misal suatu elemen mobile tanda panahnya menghadap ke kiri, maka posisi kedua elemen tersebut ditukar
4. ubah arah tanda panah elemen-elemen yang lebih besar nilainya dari elemen mobile


bagaimana???

Selasa, 01 Maret 2011

selection sort

#include <iostream>

#include <time.h>

using namespace std;

void DataRandom();

void DataManual();

void urutkan(int *errei, int ukuranArray);

int main()

{

srand((unsigned)time(NULL));

char menuDiPilih;

cout << "1. data random" << endl;

cout << "2. data manual" << endl;

cin >> menuDiPilih;

if(menuDiPilih=='1')

DataRandom();

else if(menuDiPilih=='2')

DataManual();

system("pause");

return 0;

}

void DataRandom()

{

int ukuranArray, rentangNilai, *errei;

cout << "ukuran array : ";

cin >> ukuranArray;

cout << "rentang nilai : ";

cin >> rentangNilai;

errei = new int[ukuranArray];

cout << "data hasil random:\n";

for(int i=0; i<ukuranArray; i++)

{

errei[i]=rand()%rentangNilai;

cout << errei[i] << " ";

}

cout << endl;

urutkan(errei, ukuranArray);

}

void urutkan(int *errei, int ukuranArray)

{

int posisiSekarang, posisiTerkecil;

posisiSekarang=0;

for(;posisiSekarang<ukuranArray;posisiSekarang++)

{

posisiTerkecil=posisiSekarang;

for(int i=posisiSekarang+1;i<ukuranArray;i++)

if(errei[posisiTerkecil]>errei[i])

posisiTerkecil=i;

if(errei[posisiTerkecil]<errei[posisiSekarang])

{

errei[posisiTerkecil]+=errei[posisiSekarang];

errei[posisiSekarang]=errei[posisiTerkecil]-errei[posisiSekarang];

errei[posisiTerkecil]-=errei[posisiSekarang];

}

}

cout << "data setelah diurutkan dengan selection sort:\n";

for(posisiSekarang=0;posisiSekarang<ukuranArray;posisiSekarang++)

cout << errei[posisiSekarang] << " ";

cout << endl;

}

void DataManual()

{

int ukuranArray, *errei;

cout << "ukuran array: ";

cin >> ukuranArray;

errei=new int[ukuranArray];

cout << "mengisi array dari indeks ke 0 sampai ke " << ukuranArray-1 << endl;

for(int i=0;i<ukuranArray;i++)

cin >> errei[i];

urutkan(errei,ukuranArray);

}

prima erastothenes

#include
using namespace std;

void initBatasPencarian();
void initArray(bool *errei, int ukuran);
void tampilkanYangPrima(bool *errei, int ukuran);
void silangKelipatannya(bool *errei, int ukuran, int posisiSekarang);

int main()
{
initBatasPencarian();
system("pause");
return 0;
}

void initBatasPencarian()
{
int batasPencarian;
bool *errei;
cout << "angka batas pencarian bilangan prima : ";
cin >> batasPencarian;
if(batasPencarian>1)
{
errei=new bool[batasPencarian+1];
initArray(errei,batasPencarian);
tampilkanYangPrima(errei,batasPencarian);
}
else
initBatasPencarian();
}

void initArray(bool *errei, int ukuran)
{
errei[0]=false;
errei[1]=false;
for(int i=2;i errei[i]=true;
}

void tampilkanYangPrima(bool *errei, int ukuran)
{
for(int i=0;i {
if(errei[i]==true)
{
cout< silangKelipatannya(errei,ukuran,i);
}
}
cout< free(errei);
}

void silangKelipatannya(bool *errei, int ukuran, int posisiSekarang)
{
for(int i=1;i*posisiSekarang<=ukuran;i++)
errei[i*posisiSekarang]=false;
}

euclid fpb

#include
using namespace std;
void MenginputkanBilangan();
void hitungFpb(int Besar, int Kecil);
void tukar(int &BilanganBesar,int &BilanganKecil);
int main()
{
MenginputkanBilangan();
system("pause");
return 0;
}
void MenginputkanBilangan()
{
int BilanganBesar, BilanganKecil;
cout << "masukkan dua bilangan yang akan dicari FPBnya : ";
cin >> BilanganBesar >> BilanganKecil;
if(BilanganBesar<0 || BilanganKecil<0)
{
cout << "bilangan yang dimasukkan harus lebih dar 0\n";
MenginputkanBilangan();
}
else
{
tukar(BilanganBesar,BilanganKecil);
hitungFpb(BilanganBesar,BilanganKecil);
}
}
void hitungFpb(int Besar, int Kecil)
{
int BilanganBesar, BilanganKecil, temp;
BilanganBesar=Besar;
BilanganKecil=Kecil;
cout << "FPB dari " << BilanganBesar << " dan " << BilanganKecil << " adalah : ";
while(BilanganBesar%BilanganKecil>0)
{
temp=BilanganBesar%BilanganKecil;
BilanganBesar=BilanganKecil;
BilanganKecil=temp;
tukar(BilanganBesar,BilanganKecil);
}
cout << BilanganKecil << endl;
}
void tukar(int &BilanganBesar,int &BilanganKecil)
{
if(BilanganBesar {
BilanganBesar+=BilanganKecil;
BilanganKecil=BilanganBesar-BilanganKecil;
BilanganBesar-=BilanganKecil;
}
}

buble sort

#include
#include
using namespace std;
void DataRandom();
void DataManual();
void urutkan(int *errei, int ukuranArray);
int main()
{
srand((unsigned)time(NULL));
char menuDiPilih;
cout << "1. data random" << endl;
cout << "2. data manual" << endl;
cin >> menuDiPilih;
if(menuDiPilih=='1')
DataRandom();
else if(menuDiPilih=='2')
DataManual();
system("pause");
return 0;
}
void DataRandom()
{
int ukuranArray, rentangNilai, *errei;
cout << "ukuran array : ";
cin >> ukuranArray;
cout << "rentang nilai : ";
cin >> rentangNilai;
errei = new int[ukuranArray];
cout << "data hasil random:\n";
for(int i=0; i < ukuranArray; i++)
{
errei[i]=rand()%rentangNilai;
cout << errei[i] << " ";
}
cout << endl;
urutkan(errei, ukuranArray);
}
void urutkan(int *errei, int ukuranArray)
{
int index1, index2;
for(index1=0;index1 < ukuranArray-1;index1++)
for(index2=index1+1;index2 if(errei[index1]>errei[index2])
{
errei[index1]+=errei[index2];
errei[index2]=errei[index1]-errei[index2];
errei[index1]-=errei[index2];
}
cout << "data setelah diurutkan dengan buble sort:\n";
for(index1=0;index1 < ukuranArray;index1++)
cout << errei[index1] << " ";
cout << endl;
}
void DataManual()
{
int ukuranArray, *errei;
cout << "ukuran array: ";
cin >> ukuranArray;
errei=new int[ukuranArray];
cout << "mengisi array dari indeks ke 0 sampai ke " << ukuranArray-1 << endl;
for(int i=0;i cin >> errei[i];
urutkan(errei,ukuranArray);
}

brute force fpb

#include
using namespace std;
void MenginputkanBilangan();
void hitungFpb(int Besar, int Kecil);
void tukar(int &BilanganBesar,int &BilanganKecil);
int main()
{
MenginputkanBilangan();
system("pause");
return 0;
}
void MenginputkanBilangan()
{
int BilanganBesar, BilanganKecil;
cout << "masukkan dua bilangan yang akan dicari FPBnya : ";
cin >> BilanganBesar >> BilanganKecil;
if(BilanganBesar<0 || BilanganKecil<0)
{
cout << "bilangan yang dimasukkan harus lebih dar 0\n";
MenginputkanBilangan();
}
else
{
tukar(BilanganBesar,BilanganKecil);
hitungFpb(BilanganBesar,BilanganKecil);
}
}
void hitungFpb(int Besar, int Kecil)
{
int BilanganBesar, BilanganKecil, temp;
BilanganBesar=Besar;
BilanganKecil=Kecil;
temp=BilanganKecil;
cout << "FPB dari " << BilanganBesar << " dan " << BilanganKecil << " adalah : ";
while(BilanganBesar%temp>0 || BilanganKecil%temp>0)
temp--;
cout << temp << endl;
}
void tukar(int &BilanganBesar,int &BilanganKecil)
{
if(BilanganBesar {
BilanganBesar+=BilanganKecil;
BilanganKecil=BilanganBesar-BilanganKecil;
BilanganBesar-=BilanganKecil;
}
}

KEMUNGKINAN MARAK AKIBAT SYARIAH TIDAK TEGAK

Akhir pekan lalu Majelis Ulama Indonesia (MUI) mengungkapkan keprihatinannya atas maraknya kejahatan dan kebejatan moral dewasa ini. Pernyataan keprihatinan itu dikemukakan kepada wartawan di Jakarta oleh KH Amidhan, salah satu ketua MUI yang didamoingi oleh ketua MUI lainnya, yakni KH Nazri Adlani dan KH Umar Shihab.
Menurut KH Umar Shihab, sejak tahun 2005 MUI mengusung tema Taghyir al-Munkarot (Memberantas Kemungkaran). Menurut KH Nazri Adlani, setidaknya ada dua titik kelemahan yang menjadi penyebabnya. Pertama, karena UU terhadap kejahatan tersebut hanya bersifat pembatasan semata. Menurut beliau, UU perjudian telah lama ada, namun perjudian dibolehkan jika ada izin. Peredaran miras di tempat-tempat tertentu juga dibolehkan. RPH (Rumah Potong Hewan) babi mudah memperoleh izin dan tidak direlokasi (dipindahkan) walau dekat dengan perkampungan Muslim. UU produk halal juga sifatnya masih sukarela. Kedua, penegakan hukum yang lemah oleh aparat. (Republika, 11/4/2009).
Kejahatan Dalam Angka
Keprihatinan MUI sangat beralasan. Pasalnya, kejahatan telah lama menghiasi media cetak dan tv. Di televisi berita kriminal bahkan seolah menjadi ‘acara hiburan’. Sebagaimana acara-acara film/sinetron, berita-berita kriminal kini tidak saja menjadi tontonan, tetapi sekaligus menjadi ‘tuntunan’. Anggota Komisi Penyiaran Indonesia (KPI) Bimo Nugroho pernah mengungkapkan, 30% kekerasan yang terjadi di masyarakat adalah akibat pemberitaan di tv. Namun, nomor satu penyumbang kekerasan di masyarakat justru acara-acara sinetron (Mediakonsumen.com, 5/12/2006).
Fakta juga berbicara jujur terkait dengan maraknya kemungkaran atau kejahatan ini:
1. Pornoaksi/pornografi.
Pornoaksi sudah biasa disuguhkan ke hadapan masyarakatt di televisi sebagai salah satu menu utama acara-acara hiburan, bahkan dalam tayangan-tayangan iklan. Adapun terkait pornografi, Indonesia sudah sejak beberapa waktu lalu dinilai sebagai ‘surga poronografi’ kedua setelah Russia. Di dunia cyber, menurut Sekjen Aliansi Selamatkan Anak Indonesia, Inke Maris, Indonesia menduduki peringkat ketiga pengakses internet dengan kata seks (Republika, 22/9/2008).
2. Seks Bebas.
Pornografi/pornoaksi tentu memicu kejahatan lainnya, utamanya seks bebas. Di Indonesia, seks bebas mencapai 22,6%. Ironisnya, sebagian besar dilakukan anak-anak remaja. Seks bebas tentu menaikkan angka kehamilan di luar nikah. Di Indonesia kehamilan remaja di luar nikah karena diperkosa sebanyak 3,2%, karena sama-sama suka sebanyak 12,9% dan ‘tidak terduga’ sebanyak 45% (Indofamily.net, 1/8/2008).
3. Aborsi.
Akibat langsung dari hamil di luar nikah di kalangan remaja adalah maraknya kejahatan aborsi (pengguguran kandungan). Saat ini di Jawa Barat saja, angka aborsi remaja mencapai 200 ribu kasus pertahun. Secara nasional, jumlah remaja yang melakukan praktik aborsi mencapai 700-800 ribu remaja dari total 2 juta kasus aborsi (detik.com, 9/4/2009).
4. Pelacuran.
Secara nasional, berdasarkan data ILO, pada 2002-2006 saja ditemukan sebanyak 165 ribu pelacur. Sekitar 30 persennya atau 49 ribu jiwa adalah anak di bawah usia 18 tahun (tempointeraktif, 8/4/2009).
Seks bebas dan pelacuran tentu sangat dekat hubungannya dengan HIV/AIDS. Komisi Penanggulangan AIDS Nasional (KPAN) menyebutkan bahwa seks bebas kini menjadi penyebab utama (55%) dari HIV/AIDS, selain narkoba (42%) (aids.indonesia.or.id, 5/5/2009).
5. Penyalahgunaan narkoba.
Kasus penyalahgunaan narkoba juga tidak kalah marak. Kasus ini juga banyak melanda kalangan pelajar. Menurut Mangku Pastika, berdasarkan survei BNN 2006, dari 19 juta siswa SMP dan SMA, yang terkena narkoba sebanyak 1,1 juta (okezone.com, 14/2/2009).
6. Korupsi.
Sejak tahun 2004, sebanyak 4.348 perkara korupsi telah disidik kejaksaan, kepolisian dan Komisi Pemberantasan Korupsi (KPK) (jurnalnasional.com, 9/12/2008).
Namun, menurut direktur HAM Bappenas, Diani Sadiawati, hingga tahun 2006, dari kasus korupsi yang telah terjadi di Indonesia, baru satu persen yang berhasil diselesaikan oleh Komisi Pemberantasan Korupsi (KPK). Menurutnya, saat ini di Indonesia masih terjadi kebocoran dana pembangunan 45-50 persen. Sebagian besar terkait dengan pengadaan barang dan jasa untuk pemerintah/negara. Padahal dalam APBN/APBD tahun 2007 saja dana untuk pengadaan barang/jasa pemerintah itu sebesar Rp230 triliun (tempointeraktif.com, 6/12/2006).
Kemungkinan yang Lebih Besar
Selain beberapa contoh di atas, tentu masih banyak kemungkaran atau kejahatan lain seperti pencurian, perampokan, perjudian, penipuan, kekerasan terhadap anak, pembunuhan, tawuran antarkelompok masyarakat, dan lain-lain.
Namun demikian, semua itu baru merupakan kemungkaran yang dilakukan oleh anggota masyarakat. Ada kemungkaran yang jauh lebih besar, yakni kemungkaran yang dilakukan oleh penguasa/wakil rakyat. Contohnya adalah diberlakukannya sejumlah UU yang merugikan rakyat seperti UU migas, UU penanaman modal dan UU minerba. Ketiga UU ini berpotensi semakin melepaskan peran negara dalam penguasaannya atas sumber-sumber kekayaan milik rakyat. Bayangkan, saat ini saja, menurut seorang pengamat ekonomi, migas (minyak dan gas), misalnya 90 persennya sudah berada dalam kekuasaan asing. Ada juga UU BHP. UU ini berpotensi semakin melepaskan peran dan tanggung jawab negara untuk menyelenggarakan pendidikan murah bagi rakyat. Akibatnya, jutaan anak terancam putus sekolah ke tingkat SLTA, apalagi ke Perguruan Tinggi.
Faktor Penyebab
Mengapa semua ini terjadi? Penyebabnya, sebagaimana diungkapkan oleh KH Nazri Adlani di atas, paling tidak ada dua. Pertama, UU yang lemah. Dalam sistem sekuler yang diterapkan oleh negara saat ini, lemahnya UU sebagai produk dari proses demokrasi di parlemen adalah wajar. Pasalnya, sering UU tersebut merupakan hasil tawar-menawar dan kompromi akibat dari tarik-menarik berbagai kepentingan di kalangan para pembuat hukum (para anggota DPR). Entah kepentingan para anggota DPR sendiri, kepentingan partai atau kepentingan pihak-pihak di luar mereka (seperti pengusaha/pemilik modal). Misal UU Pornografi. Alih-alih ditujukan untuk mencegah dan memberantas pornografi, UU ini terkesan sekadar ‘mengatur’ pornografi. Sejumlah pasal bahkan cenderung seperti ‘melegalkan’ pornografi/pornoaksi, asal ‘atas nama seni/budaya’. Akibatnya, banyak pelaku pornografi/pornoaksi (yang didukung oleh para pemilik modal) malah merasa lebih bebas karena mereka melakukan semua itu atas nama seni/budaya.
Kedua, lemahnya aparat penegak hukum. Misal, penerapan UU antikorupsi pada pelaksanaannya sering ‘tebang pilih’. Kasus-kasus korupsi yang banyak disidik selama ini hanyalah kasus-kasus biasa dan kecil. Itu pun pelakunya banyak yang bebas setelah menjalani proses pengadilan. Sebaliknya, kasus-kasus besar yang menghabiskan uang negara puluhan triliun rupiah, seperti kasus BLBI, sampai sekarang tak jelas kabarnya.
Kedua faktor penyebab di atas sebetulnya hanya faktor sampingan. Penyebab utamanya tidak lain adalah sistem yang mungkar yang diterapkan di negeri ini. Sistem yang mungkar (sekular, tidak menerapkan syariah Islam) ini hanya memproduksi hukum-hukum yang lemah dan tak berdaya dalam mencegah berbagai kemungkaran dan kejahatan. Sistem ini pun tak mampu melahirkan para penguasa dan aparat penegak hukum yang bertakwa kepada Allah SWT. Akibatnya, banyak penguasa atau aparat penegak hukum justru kemudian menjadi bagian dari orang-orang yang berbuat mungkar dan jahat. Penangkapan sejumlah wakil rakyat, jaksa, pejabat, bahkan yang terbaru, Ketua KPK, hanyalah secuil contoh. Mereka terjerat, baik oleh kasus korupsi, pembunuhan atau perselingkuhan.
Butuh Kekuasaan
Kemungkaran sistem tentu merupakan kemungkaran terbesar. Sebab, dalam sistem yang mungkar seperti saat ini, syariah Islam atau hukum-hukum Allah SWT dicampakkan. Manusia justru membuat hukum sendiri yang terlepas dari hukum-hukum Allah. Padalah Allah telah berfirman:
Membuat hukum itu sesungguhnya hanyalah kewenangan Allah (QS Al An’am :57)