ホームページ  >  記事  >  バックエンド開発  >  PHPで複数の集合のデカルト積を計算する方法の説明

PHPで複数の集合のデカルト積を計算する方法の説明

jacklove
jackloveオリジナル
2018-06-08 18:11:411612ブラウズ

デカルト積は、数学における2つのセットXとYのデカルト積(デカルト積)を指します。直積とも呼ばれ、X*Yとして表されます。最初のオブジェクトはXが次のメンバーです。 Y であり、2 番目のオブジェクトは、Y のすべての可能な順序ペアのメンバーの 1 つです。

セット A={a,b} およびセット B={0,1,2} であると仮定すると、次のデカルト積になります。 2 つのセットは {(a,0),(a,1),(a,2),(b,0),(b,1),(b,2)}
アイデア: まず、最初のセットと 2 番目のセットの デカルト積 を計算し、結果を新しいセットとして保存します。
次に、新しいセットを使用して次のセットとのデカルト積を計算し、最後のセットでデカルト積が計算されるまでこの方法でループします。
たとえば、次のセットがあり、デカルト積を計算する必要があります。

<?php$sets = array(    array(&#39;白色&#39;,&#39;黑色&#39;,&#39;红色&#39;),    array(&#39;透气&#39;,&#39;防滑&#39;),    array(&#39;37码&#39;,&#39;38码&#39;,&#39;39码&#39;),    array(&#39;男款&#39;,&#39;女款&#39;)
);?>

コードは次のとおりです:

<?php/**
 * php 计算多个集合的笛卡尔积
 * Date:    2017-01-10
 * Author:  fdipzone
 * Ver:     1.0
 *
 * Func
 * CartesianProduct 计算多个集合的笛卡尔积
 *//**
 * 计算多个集合的笛卡尔积
 * @param  Array $sets 集合数组
 * @return Array
 */function CartesianProduct($sets){

    // 保存结果
    $result = array();    // 循环遍历集合数据
    for($i=0,$count=count($sets); $i<$count-1; $i++){        // 初始化
        if($i==0){            $result = $sets[$i];
        }        // 保存临时数据
        $tmp = array();        // 结果与下一个集合计算笛卡尔积
        foreach($result as $res){            foreach($sets[$i+1] as $set){                $tmp[] = $res.$set;
            }
        }        // 将笛卡尔积写入结果
        $result = $tmp;

    }    return $result;

}// 定义集合$sets = array(    array(&#39;白色&#39;,&#39;黑色&#39;,&#39;红色&#39;),    array(&#39;透气&#39;,&#39;防滑&#39;),    array(&#39;37码&#39;,&#39;38码&#39;,&#39;39码&#39;),    array(&#39;男款&#39;,&#39;女款&#39;)
);$result = CartesianProduct($sets);
print_r($result);?>

出力:

Array(
    [0] => 白色透气37码男款
    [1] => 白色透气37码女款
    [2] => 白色透气38码男款
    [3] => 白色透气38码女款
    [4] => 白色透气39码男款
    [5] => 白色透气39码女款
    [6] => 白色防滑37码男款
    [7] => 白色防滑37码女款
    [8] => 白色防滑38码男款
    [9] => 白色防滑38码女款
    [10] => 白色防滑39码男款
    [11] => 白色防滑39码女款
    [12] => 黑色透气37码男款
    [13] => 黑色透气37码女款
    [14] => 黑色透气38码男款
    [15] => 黑色透气38码女款
    [16] => 黑色透气39码男款
    [17] => 黑色透气39码女款
    [18] => 黑色防滑37码男款
    [19] => 黑色防滑37码女款
    [20] => 黑色防滑38码男款
    [21] => 黑色防滑38码女款
    [22] => 黑色防滑39码男款
    [23] => 黑色防滑39码女款
    [24] => 红色透气37码男款
    [25] => 红色透气37码女款
    [26] => 红色透气38码男款
    [27] => 红色透气38码女款
    [28] => 红色透气39码男款
    [29] => 红色透气39码女款
    [30] => 红色防滑37码男款
    [31] => 红色防滑37码女款
    [32] => 红色防滑38码男款
    [33] => 红色防滑38码女款
    [34] => 红色防滑39码男款
    [35] => 红色防滑39码女款
)

この記事では、PHP が複数の集合のデカルト積を計算する方法について説明します。関連コンテンツの詳細については、PHP の中国語 Web サイトを参照してください。

関連する推奨事項:

ディレクトリ構成を含む php ファイルでの open_basedir の使用とパフォーマンス分析について

Ajax クロスについて-domain access cookie lossの解決方法の説明

mysqlのkey_lenの計算方法の説明explain

以上がPHPで複数の集合のデカルト積を計算する方法の説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。