バックエンド開発者にとっては、無限レベルの分類に強い印象を受けたのではないでしょうか。最初はかなり時間がかかったのではないでしょうか。 無限分類ツリー構造の応用シナリオは多数あります。たとえば、バックエンド開発では、ユーザーの関連権限を読み取ってツリー構造を生成する必要があります。フロントエンド開発で権限ツリーを取得したら、構造に従ってユーザーがアクセスする権限を持つ列を表示できます。別の例として、Web ページの列分類があります。 著者も、最初にツリー構造を生成する必要に迫られたとき、頭を悩ませました。その後、コードが少なく、明確で理解しやすい生成アルゴリズムを見つけました。それは、再帰です。 まず、データベースに保存されているカテゴリ情報が次のとおりであることを確認します。
親フィールドには、このエントリの親番号が記録されます。たとえば、ヘアドライヤーの親番号は 3 で、ヘアドライヤーは家電製品に属していることを意味し、家電製品の親番号は 1 で、家電製品は電化製品のカテゴリに属していることを意味します。ヘアドライヤーのエントリを電化製品のエントリに関連付ける直接的な識別はありませんが、電化製品 <- 家電製品 <- ヘアドライヤーの関係を示すツリー構造が必要です。 著作権透かし WeChat 公開アカウント Python プログラミング リファレンス 親を通じて親番号を見つけ、関連付け関係を確立する操作は、実際にはすべてのノードが見つかるまで繰り返される操作です。これは再帰アルゴリズムと非常に一致しており、対応する再帰コードは簡単に記述できます。
データベースに保存されている情報を generate_tree 関数に渡すだけです。この再帰コードは、親を使用して往復ループで子ノードを見つけ、見つけた子ノードをツリーに追加します。完全なコードは次のとおりです。
実行してみて、構造が期待どおりであるかどうかを確認してください。 キャッシュ最適化アルゴリズムの使用再帰アルゴリズムには繰り返し計算が多く含まれており、余分なリソースを消費するだけでなく、関数の実行効率も低下します。そのため、再帰を最適化する必要があります。ここでは、関数実行の効率を向上させるためにキャッシュ最適化方式が使用されます。 基本的な考え方は、このエントリの番号をリストに追加し、ノード関係が見つかるたびにそれをキャッシュして、このエントリに対してノード関係が見つかったことを示すことです。関数を実行する往復ループ内でこのエントリが再度検出された場合は、スキップできます。コードの変更は簡単で、キャッシュ リストと制御フロー ステートメントを追加するだけです。
この時点で、無限レベルの分類ツリー構造を生成するアルゴリズムが完成します。学びましたか? |
<<: AIによる売上予測により、組織は不確実性の中でコントロールを獲得できる
>>: 「自然言語処理」とは何ですか? 具体的に何を「処理」するのですか?
GPT や LLaMA などの大規模な言語モデルを使用する場合、入力プロンプトに文字数制限があるこ...
エンジニアであれ消費者であれ、AIとIoT技術が私たちの生活にもたらした変化は誰もが感じています。ビ...
7月4日、OpenAIのチャットボットChatGPTは先週、「Browse with Bing」とい...
IT Homeは11月10日、OpenAIがAIモデルのトレーニング用にパブリック/プライベートデー...
[[181277]]オーストリアの記号計算研究所 (RISC) の Christoph Koutsc...
著名なAI研究者のジェフリー・ヒントン氏は、Googleを退職後、人工知能関連産業の研究に専念してい...
AIによって仕事が奪われるのではないかと心配する人が多い中、ある企業が世界初のAIヒューマノイドロボ...
速報です!海外メディアは、OpenAIのCEOサム・アルトマン氏が、元Appleのチーフデザイナーの...
人類の生産性の発展の歴史をみると、肉体労働の時代、機械化の時代、電化の時代、自動化の時代を経て、現在...
[[271667]]この記事では、ブラウザ上で動作する顔認識フレームワーク、Face-api.js ...
2月28日、中国人工知能産業発展連盟「AIIAカップ」人工知能ツアー報告会において、中国航天科技集団...