2013-03-08 101 views
1

我有一個對象數組,ID屬性爲,我需要將它們鏈接在一起。Pseudo-Apriori算法

我想將鏈接在一起的對象ID插入到2列MySQL表中。

有問題的表格有2列:AB。我想將沒有任何重疊的對象集合鏈接在一起。

我把它稱爲僞先驗,因爲它類似於apriori算法的候選生成過程。

對於下面的例子,我有一個ID值爲1-5的五個對象。例如:$obj1->id == 1等等。

示例表:

Input IDs: 
{1, 2, 3, 4, 5} 

Output DB Table: 
----------- 
| A | B | 
----------- 
| 1 | 2 | 
| 1 | 3 | 
| 1 | 4 | 
| 1 | 5 | 
| 2 | 3 | 
| 2 | 4 | 
| 2 | 5 | 
| 3 | 4 | 
| 3 | 5 | 
| 4 | 5 | 
----------- 
+0

我不明白你想要計算什麼,或者它如何與apriori算法相關 – 2013-03-08 13:03:07

+0

你可以舉一個預期outuput的例子嗎? – m4t1t0 2013-03-08 13:03:30

+0

@ Anony-Mousse我希望澄清這個問題... – Redandwhite 2013-03-08 13:15:38

回答

2

真不知道你想做什麼。但是,如果其結果必然是作爲表例子,那麼你可以用下面的循環做:

$arr = array(1, 2, 3, 4, 5); 

for($i = 0; $i < count($arr); $i++) { 
    for($j = $i+1; $j < count($arr); $j++) { 
     // add db logic here 
     $q = 'insert into table (' . $arr[$i] . ', ' . $arr[$j] . ')'; 
    } 
} 

下面是輸出的jsfiddle例如:JsFiddle

+0

正是我無法解決的問題,儘管過去我已經做了很多次了。非常感謝! – Redandwhite 2013-03-08 14:12:21

+0

沒問題的人! – 2013-03-08 14:25:34

+0

順便說一句,我不確定你需要第二個'for'循環中的'var'字。 – Redandwhite 2013-03-08 19:49:05

2

例如梨包Math_Combinatorics可以做到這一點。

<?php 
require 'Math/Combinatorics.php'; 
$c = new Math_Combinatorics; 
foreach($c->combinations(array(1,2,3,4,5), 2) as $k) { 
    echo join(', ', $k), "\n"; 
} 

打印

1, 2 
1, 3 
1, 4 
1, 5 
2, 3 
2, 4 
2, 5 
3, 4 
3, 5 
4, 5 
-2

請訪問這個地址:Apriori Algorithm in PHP

方法:setMaxScan(INT),setMinSup(INT),setMinConf(INT),setDelimiter(串),getMinSup (void),getMinConf(void),getMaxScan(void),getDelimiter(void),process(string or array),printFreqItemsets(void),getFreqItemsets(void),printAssociationRules(void),getAssociationRules(void),saveFreqItemsets(string) ,saveAssociationRu les(字符串)