2, 'epsilon' => 2, 'epsilon:theta' => 0, 'beta' => 4, 'beta:theta' => 2, 'beta:epsilon' => 2, 'beta:epsilon:theta' => 0, 'alpha' => 4, 'alpha:theta' => 2, 'alpha:epsilon' => 2, 'alpha:epsilon:theta' => 0, 'alpha:beta' => 4, 'alpha:beta:theta' => 2, 'alpha:beta:epsilon' => 2, 'alpha:beta:epsilon:theta' => 0, ], Apriori::apriori([ ['alpha', 'beta', 'epsilon'], ['alpha', 'beta', 'theta'], ['alpha', 'beta', 'epsilon'], ['alpha', 'beta', 'theta'], ]) ); self::assertEquals( [ '4' => 5, '3' => 3, '3:4' => 3, '2' => 5, '2:4' => 4, '2:3' => 2, '2:3:4' => 2, '1' => 3, '1:4' => 2, '1:3' => 1, '1:3:4' => 1, '1:2' => 3, '1:2:4' => 2, '1:2:3' => 1, '1:2:3:4' => 1, ], Apriori::apriori([ ['1', '2', '3', '4'], ['1', '2', '4'], ['1', '2'], ['2', '3', '4'], ['3', '4'], ['2', '4'], ]) ); } public function testAprioriSubset() : void { self::assertEquals( ['beta:theta' => 2], Apriori::apriori( [ ['alpha', 'beta', 'epsilon'], ['alpha', 'beta', 'theta'], ['alpha', 'beta', 'epsilon'], ['alpha', 'beta', 'theta'], ], ['beta', 'theta'] ) ); self::assertEquals( ['2:3' => 2], Apriori::apriori( [ ['1', '2', '3', '4'], ['1', '2', '4'], ['1', '2'], ['2', '3', '4'], ['3', '4'], ['2', '4'], ], ['2', '3'] ) ); } }