0

私は現在、次の問題で立ち往生しています:

n 要素のデータベースがあり、再帰検索を実行して、可能なすべての一致を取得したいと考えています。

つまり、最初のパターンで k 件の一致が得られたとします。私が見つけたすべての k 一致について、次のパターンでデータベースを再検索し、新しい連想リストを取得します....など。これは私の問題です。すべての結果を返す関数を作成することはできません。

この問題に取り組むための「計画」を思いつくことができません。現在の assoc-list を保存し、最後に到達したら削除する方法を常に考えています。

私のアイデアの要約: database=db があり、 n のパターンに一致する必要がある場合。パターン 0 から始めて、k 個の assoc-list を取得し、パターン 1 に一致するように進みたいと思います。パターン 1 を終了し、M assoc-list を取得します。m assoc-list ごとに前に進みます...最終的に、サイズ n (パターンの数) の assoc-list を取得するか、false を取得します。

この「レンガの壁」を乗り越えるために、本当にいくつかのアイデアが欲しいだけです。判断してください、刺してください、私の考えを殺してください、何でも。ありがとうございました。

4

1 に答える 1

0

その後の検索に基づいて、検索を絞り込むか広げるかはわかりません。拡大する疑似コードは次のとおりです。

recursive_search (list_of_patterns)
  if is_empty(list_of_patterns)
    return empty_list
  pattern = pop_first(list_of_patterns)
  return query(pattern) + recursive_search(list_of_patterns)

編集して、クエリを使用してパターンをアリリストとして保持します... 私のスキーム foo は弱いですが、次のようになります。

(define query_alist (lambda x)(x . query-exec(x)))

(define r_query (lambda pattern__list)
  (cond
    ((null pattern_list) ())
    (else ((query_alist (first pattern_list) (r_query (rest pattern_list)))
  )
) 
于 2013-04-03T22:42:44.027 に答える