Sunday, December 18, 2011

Pohon (struktur data)



Simpul (node)

Sebuah Simpul dapat mengandung sebuah nilai atau suatu kondisi atau menggambarkan sebuah struktur data terpisah atau sebuah bagian pohon itu sendiri. Setiap simpul dalam sebuah pohon memiliki nol atau lebih simpul anak (child nodes), yang berada dibawahnya dalam pohon (menurut perjanjian, pohon berkembang ke bawah, tidak seperti yang dilakukannya di alam). Sebuah simpul yang memiliki anak dinamakan simpul ayah (parent node) atau simpul leluhur (ancestor node) atau superior. Sebuah simpul paling banyak memiliki satu ayah. Tinggi dari pohon adalah panjang maksimal jalan ke sebuah daun dari simpul tersebut. Tinggi dari akar adalah tinggi dari pohon. Kedalaman dari sebuah simpul adalah panjang jalan ke akarnya dari simpul tersebut.

Daun (Leaf nodes)

Semua simpul yang berada pada tingkat terendah dari pohon dinamakan daun (leaf node). Sejak mereka terletak pada tingkat paling bawah, mereka tidak memiliki anak satupun. Seringkali, daun merupakan simpul terjauh dari akar. Dalam teori grafik, sebuah daun adalah sebuah sudut dengan tingkat 1 selain akar (kecuali jika pohonnya hanya memiliki satu sudut; maka akarnya adalah daunnya juga). Setiap pohon memiliki setidaknya satu daun.
Dalam pohon berdasarkan genetic programming sebuah daun (juga dibilang terminal) adalah bagian terluar dari sebuah program pohon. Jika dibandingkan dengan fungsinya atau simpul dalam, daun tidak memiliki argumen. Di banyak kasus dalam daun-GP input ke programnya.

Simpul dalam (Internal nodes)

Sebuah simpul dalam adalah semua simpul dari pohon yang memiliki anak dan bukan merupakan daun. Beberapa pohon hanya menyimpan data di dalam simpul dalam, meskipun ini memengaruhi dinamika penyimpanan data dalam pohon. Sebegai contoh, dengan daun yang kosong, seseorang dapat menyimpan sebuah pohon kosong dengan satu daun. Bagaimanapun juga dengan daun yang dapat menyimpan data, tidak dimungkinkan untuk menyimpan pohon kosong kecuali jika seseorang memberikan beberapa jenis penanda data di daun yang menandakan bahwa daun tersebut seharusnya kosong (dengan demikian pohon itu seharusnya kosong juga).
Sebaliknya, beberapa pohon hanya menyimpan data dalam daun, dan menggunakan simpul dalam untuk menampung metadata yang lain, seperti jarak nilai dalam sub pohon yang berakar pada simpul tersebut. Jenis pohon ini berguna untuk jarak yang meragukan.

Sub pohon (Subtrees)


Sebuah sub pohon adalah suatu bagian dari pohon struktur data yang dapat dilihat sebagai sebuah pohon lain yang berdiri sendiri. Simpul apapun dalam pohon P, bersama dengan seluruh simpul dibawahnya, membentuk sebuah sub pohon dari P. Sub pohon yang terhubung dengan akar merupakan keseluruhan pohon tersebut. Sub pohon yang terhubung dengan simpul lain manapun dinamakan sub pohon asli (proper subtree).

Penyusunan pohon


erdapat dua jenis pohon. Sebuah pohon tidak terurut (unordered tree) adalah sebuah pohon dalam arti struktural semata-mata, yang dapat dikatakan memberikan sebuah simpul yang tidak memiliki susunan untuk anak dari simpul tersebut. Sebuah pohon dengan suatu susunan ditentukan, sebagai contoh dengan mengisi bilangan asli berbeda ke setiap anak dari simpul tersebut, dinamakan sebuah pohon terurut (ordered tree), dan struktur data yang dibangun di dalamnya dinamakan pohon terurut struktur data (ordered tree data structures). Sejauh ini pohon terurut merupakan bentuk umum dari pohon struktur data. Pohon biner terurut merupakan suatu jenis dari pohon terurut.







PROGRAM ANTIRAN (QUEUE)


Struktur Data Antrean (Queue) adalah suatu bentuk khusus dari List Linier dengan operasi penyisipan (Insertion) hanya diperbolehkan pada salah satu sisi, yang disebut sisi Belakang (Rear) dan operasi penghapusan (Deletion) hanya diperbolehkan pada sisi lainnya yang disebut sisi Depan (Front) dari List.
Prinsip Antrean : FIFO (First In First Out)
Antrean Q = [ Q1, Q2, Q3,……….., QT]
Front(Q) = bagian depan dari antrean Q
Rear(Q) = bagian belakang dari antrean Q
Noel(Q) = Jumlah elemen di dalam antrean ( berharga integer)
Jadi : Front(Q) = QT
Rear(Q) = Q1
Noel(Q) = T



Contoh program :

#include <iostream.h>
#include <conio.h>
#define maks 14
#define Que1 5
#define Que2 5

class Queue{
friend ostream& operator<<(ostream&, const Queue&);
public:
Queue();
int penuh(int);
int kosong(int);
void cetak();
char enqueue(char);
char dequeue();
void pecah(Queue &, Queue&);
private:
char A[maks];
int banyak;
};
ostream& operator<<(ostream& out, const Queue& s)
{
out << "\n \t isi Dari Queue:";
for (int i=0;i<s.banyak;i++)
out << s.A[i] << " ";
return out;
}

Queue::Queue()
{
banyak=0;
for (int i=0; i<maks; i++)
A[i]='0';
}

int Queue::penuh(int s)
{ return s==maks?1:0;}

int Queue::kosong(int s)
{ return s==0?1:0; }

void Queue::cetak (){
cout<<"\n Queue : ";
for(int i=0;i<banyak;i++)
cout<<A[i]<<" ";
}

char Queue::enqueue(char x)
{
if (penuh(banyak)) cout << "Queue penuh";
else if (A[0]=='0'){
A[0]=x;
banyak++;
}
else{
for (int i=banyak; i>=0; i--)
A[i+1]=A[i];
A[0]=x;
banyak++;
}
return banyak;
}
char Queue::dequeue()
{
char temp=A[--banyak];
A[banyak]='0';
return temp; }

void Queue::pecah(Queue &q1, Queue &q2){
int i;
char a[Que1],b[Que2];
Queue q3;
cout<<"setelah antrian digabung \n";
for (i=0;i<Que1;i++){
a[i] = q1.dequeue();
q3.enqueue(a[i]);
}
for (i=0;i<Que2;i++){
b[i] = q2.dequeue();
q3.enqueue(b[i]);
}
cout<<q3<<endl;
}

int main(){
Queue p,q,r;
char z[5] = {69,68,67,66,65};
char y[5] = {1,2,3,4,5};
cout<<"\t\tAntrian ke satu :\n";
for(int i=Que1-1;i>=0;i--){
p.enqueue(z[i]);
cout << p<<endl;
}
cout << "+++++++++++++++++++++++++++++++++";
cout << endl<<endl;
cout<<"\t\t Antrian ke dua: \n";
for(int j=Que2-1;j>=0;j--){
q.enqueue(y[j]);
cout << q<<endl;
}
cout << "+++++++++++++++++++++++++++++++++";
cout<<endl<<endl;
r.pecah(p,q);
cout<<endl;
getch();
}

Diskusi Kelompok MLM pulsa

Diskusi Kelompok MLM pulsa





Gambar  Sistem Bisnis MLM Pulsa Elektrik

kelemahan :
Khusus dalam hal bisnis MLM pulsa elektrik, kelemahan menjadi bertambah manakala satu-satunya perangkat yang dapat digunakan untuk bertransaksi (dan berkomunikasi) antar upline dengan downline hanya melalui pesawat handphone. Walaupun secara teknologi pesawat handphone masa kini telah dapat mengakomodasi kebutuhan para pelaku bisnis MLM pulsa elektrik, namun sampai saat ini belum ada aplikasi bantu/penunjang yang dapat mengeliminasi kelemahan bisnis MLM tersebut. Aplikasi-aplikasi untuk menjalankan bisnis MLM pulsa elektrik yang ada di pasaran hanya dapat digunakan untuk menjalankan transaksi-transaksi inti dari bisnis ini saja. Seperti jual-beli pulsa, pendaftaran dan penghapusan downline, penghitungan komisi/rebate, penjualan dan pengisian pulsa eceran, dan sebagainya.



Struktur MLM
Struktur MLM penjualan pulsa secara garis besar serupa dengan struktur MLM lain yang terdiri dari root, upline, dan downline. Root adalah anggota utama yang berinisiatif dalam membangun sistem. Anggota level 1 adalah downline dari root dan sekaligus upline dari anggota level 2. Setiap anggota dapat memiliki downline dengan jumlah tak terbatas. Pada level 3 dicontohkan anggota yang belum memiliki anggota [2]. Penjelasan lebih lanjut dapat dilihat pada gambar 2 berikut.

 
Gambar  Struktur pohon MLM

Sistem ini sebenarnya hampir sama dengan sistem jual beli konvensional dimana seorang upline bertindak sebagai pedagang partai besar yang mengambil keuntungan dari pedagang partai kecil dimana selisih harga ditetapkan di awal. Hanya saja bisnis ini menggunakan sistem jejaring seperti yang diterapkan pada MLM yang memiliki keterikatan antara downline dengan upline-nya.
Fitur utama yang secara langsung diperlukan dalam sistem ini adalah proses transaksi pulsa. Proses transaksi pulsa yang melibatkan provider penyedia pulsa digambarkan pada gambar 4. Pada saat customer membeli pulsa pada retailer, retailer akan mengirim request berupa SMS ke Sistem yang telah dimiliki oleh agen. Sistem tersebut membaca format SMS dengan memeriksa kode transaksi, nomor handphone tujuan dan pin. Setelah pemeriksaan bernilai true, sistem akan melakukan request kepada sistem yang dimiliki oleh provider kartu seluler (operator).





Gambar  Diagram Alir Transaksi Pulsa

Fitur lain yang menjadi inti pada proses MLM adalah pendaftaran downline dan pemindahan saldo. Sistem pendaftaran downline dilakukan dengan cara upline mengirimkan informasi terkait downline seperti nomor handphone, selisih harga, dan pin pengguna. Informasi tersebut dikirim ke sistem dan sistem akan melakukan pencatatan pada database. Gambar 5. Deskripsi proses pendaftaran downline oleh upline ke dalam sistem MLM.


Gambar  Diagram Alir Pendaftaran Agen

Untuk dapat melakukan transaksi penjualan pulsa, downline perlu mengisi rekeningnya dengan sejumlah pulsa. Proses pembelian ini dilakukan antara upline dengan downline, setelah terjadi pembayaran sejumlah pulsa yang dibeli, upline mengirimkan sejumlah pulsa berupa saldo (nilai nominal pulsa) yang dimilikinya kepada downline tersebut. Gambar 6 menampilkan diagram alir proses pemindahan pulsa.






Gambar  Diagram Alir Proses Pemindahan Pulsa