2017-05-06 6 views
-2

私はデータリストを持っています。どのようにこのプログラムの時間の複雑さを見つけるのですか?

O(N)の複雑さを計算する方法
db = [("Ada","works", "IBM") 
    ,("Alice","director", "Ada") 
    ,("Tom","works", "IBM") 
    ,("Tommy","director", "Tom") 
,("IBM","isat",  "CA") 
,("CA","in",  "USA") 
] 
ask db = map (\(x,y,z) -> (z == "IBM")) db 

? 私はリスト2,5,10.O(N)の長さで結果を取得したい場合は2,5,10のように同じですか?私がしている場合

trans2 db = concat (map ((x,y,z) -> concat (map((x',y',z') -> if (z==x') then [] else [(x,y ++ "." ++ y',z')] else []) db)) db) 

O(n)はどのように計算できますか?プログラムのランタイムですか?タイミングの複雑さ

+0

* O(n)*の複雑さ? * O(n)*は複雑さクラスです。 –

+0

関数O(n)時間の複雑度 – Ada

+0

比較は 'n'回(' map'を使用しているため)行われた一定時間の操作であるため、 'ask'関数はO(n)(別名リニア時間) 。 – Erik

答えて

1

質問は不明で、すぐに閉鎖される予定です。簡単に。

O(n)は、である。あなたがO(n)を知っていて、複雑さを望むなら、あなたは完了です。

長さはnが表すものなので、この場合のリストの長さ(2,5,10、何を持つか)はこの場合の複雑さの要因ではありません。

アルゴリズムの複雑さを自動的に計算するコードはありません。これは手動分析です。

+0

これは、dbに5つのサブリストがある場合、複雑さは5ですか?しかし、リストを逆にして他の操作と組み合わせるなど、他の操作を行うと、どのように複雑度を計算できますか?TKS。 – Ada

+0

いいえ、 '5'は複雑さクラスではありません。あなたは、それ自体が誤解である単一の数字への答えを減らそうと努力し続けます。 –

+0

これは、時間の複雑さがリストの長さに依存することを意味します。 – Ada

関連する問題