questo e' calcolo combinatorio ....
http://andr3a.dotgeek.org/index.php?language=2&class=58

esempio caso tuo specifico
codice:
<?php
require( 'Combinatory.class.php' );
$possibilita = Array( 'a', 'b', 'c', 'd' );
$c = &new Combinatory('-');
$riscontri = &$c->result( $possibilita, 2, "Cn,k" );
echo '<pre>';
var_dump( $riscontri );
echo '</pre>';
?>
output generato
codice:
array(6) {
[0]=>
string(3) "a-b"
[1]=>
string(3) "a-c"
[2]=>
string(3) "a-d"
[3]=>
string(3) "b-c"
[4]=>
string(3) "b-d"
[5]=>
string(3) "c-d"
}