すぐに話します。スケジューリングを担当する Web または電話アプリに取り組んでいます。履修した科目を学生に入力してもらい、必要に応じて履修すべき科目の組み合わせを提示します。
ただし、要件に合った 150 のコースがあり、3 つのコースを探しているとします。150C3の組み合わせですね。
このようなものをブラウザやモバイル デバイスで実行することは可能でしょうか?
まず第一に、検索ツリーを剪定できるよりスマートなアルゴリズムが必要です。また、同じ一連のコースに対してこれを何度も行う場合は、サーバーで計算を行う方が適切であり、実行可能なデータ構造を事前に計算することで、クエリの実行時間を短縮できる可能性があります。たとえば、ノードの下の各サブツリーに「互換性のある」ノードが含まれるツリーを作成できます。
オプション 1 (Time\Space コストがかかる) : 携帯電話のユーザーが (150*149*148) の可能な選択肢のリストをページごとに閲覧できるようにします。処理はサーバー側で行われます。
オプション 2 (シンプル) : (150*149*148) アイテムの決定木の代わりに、150 アイテムのバッグを提供し、彼がバッグから 1 つのアイテムを選択した場合、バッグからそれを削除します。
オプション 3 (複雑) : 依存関係ツリー (親コースには子コースが必要) と、学生が既に受講したコースのリスト、およびトラック\レベルを使用して、意思決定ツリー (可能な選択肢) を拡張します。
私の知る限り、ほとんどの教育システムは 3 番目のオプションを使用しています。これには、学生のプロファイルが必要です。
ええ、数学は私が扱えると思います!
150 のコースがあり、3 つを選択する必要がある場合、可能性の量は(150*149*148)/(3*2)
(ジェリーごとの修正) であり、これは 150 の階乗よりもはるかに多くのゼロです;)
今、あなたは本当にそのサイズの配列を構築したくありませんし、そうする必要もありません! すべての Web 言語には、配列内の要素をランダムに選択するという考え方があるため、配列内の要素を取得し、そこから 3 つのランダムな一意のエントリを要求します。
潜在的なコースの組み合わせは非常に大きいですが、あなたの投稿に基づいて、それらを計算しようとする理由さえありません. n 個のサイズのリストから k 個のアイテムをランダムに選択するこのタスクは、古くて遅いデバイスでも非常に簡単です。
提案として 1 つのランダムな選択をつかむのではなく、すべての潜在的なコースの組み合わせを計算する必要がある特定の理由はありますか? そうでない場合、問題は解決しました!