Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- /*** ---------- COMBINATIONAL -------- ***/
- /*---- created by cahyadsn@yahoo.com ----*/
- /*-------created on 2012-09-06 -----------*/
- function combination($member,$num){
- $n = count($member);
- //jumlah total kombinasi yang mungkin
- $total = pow(2, $n);
- $list =array();
- //Loop untuk setiap kombinasi yang mungkin
- $k=0;
- for ($i = 0; $i < $total; $i++) {
- $list[$k]=array();
- //Untuk setiap kombinasi, dicek untuk setiap biat
- for ($j = 0; $j < $total; $j++) {
- //apakah data bit $j ada pada bit $i?
- if ((pow(2, $j) & $i)) $list[$k][]=$member[$j];
- }
- if(count($list[$k])==$num){
- //jika jumlah anggota sama dengan jumlah yang diinginkan increment $k
- $k++;
- }else{
- //jika tidak sesuai, hapus array $list[$k]
- unset($list[$k]);
- }
- }
- return $list;
- }
- function print_member($list,$name=''){
- echo ($name)?"$name = ":"";
- echo "{";
- for($i=0;$i<count($list);$i++){
- if(isset($list[$i][0])){
- echo "{";
- for($j=0;$j<count($list[$i]);$j++){
- echo ($j!=0?",":"").$list[$i][$j];
- }
- echo "}";
- }else{
- echo ($i!=0?",":"").$list[$i];
- }
- }
- echo "}";
- echo "<br />";
- }
- function array_composition($list){
- $r=$list[0];
- for($i=1;$i<count($list);$i++){
- $r=array_merge($r,$list[$i]);
- }
- $r=array_values(array_unique($r));
- return $r;
- }
- //example:
- $data_awal=array(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22);
- print_member($data_awal,'source');
- //--- masukkan min_support #1, pilih dari list data awal sebelumnya, sehingga didapat:
- $select_1 = array(6,7,8,9,10,11);
- $num = 2; //jumlah anggota untuk setiap kombinasi yang diinginkan
- print_member($select_1,'select_1');
- $result=combination($select_1,$num);
- print_member($result,'combination-2');
- //--- masukkan min_support #2, pilih dari list kombinasi sebelumnya, sehingga didapat:
- $select2=array($result[0],$result[1],$result[2]);
- print_member($select2,'select_2');
- // increment jumlah anggota untuk tiap kombinasi
- $num++; // --- $num=3;
- $select2=array_composition($select2);
- $result2=combination($select2,$num);
- print_member($result2,'combination-3');
- //--- dst
- ?>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement