「非病理学的データ」とはどういう意味ですか?


14

Courseraでアルゴリズムクラスを受講しました。ハッシュテーブルに関するビデオの教授は、

真実は、非病理学的データの場合、適切に実装されたハッシュテーブルで一定時間の操作を取得するということです。

「非病理学的データ」とはどういう意味ですか?例を挙げていただけますか?

回答:


15

病理学的データは、意図した計算で何らかの形で問題を引き起こすデータであると想定されています。実際の使用で十分にまれな場合は病理学的と呼ばれ 、ほとんどの場合問題なく動作します。これは、数学的にもっと正確にできる場合もあります(たとえば、確率を使用して)が、病理学という言葉の使用はしばしば非公式です。

たとえば、トマトサラダとケチャップは、トマトにアレルギーのある人を意味する病的な人を除いて、素晴らしい食べ物です。場合によっては実際に殺すことができます。しかし、トマトアレルギーの人は非常にまれであるため、病的な場合を除き、トマト料理は素晴らしいと見なされます。

最適なアルゴリズムよりも最悪の場合の複雑度は高いものの、最悪の場合の最適なアルゴリズムよりも平均的に良好または優れているアルゴリズムは数多くあります。クイックソートとマージソート比較すると、最悪の場合、クイックソートは時間、マージソートはO n lg n です。しかし、人々は両方とも平均O n lg n であり、スペースの複雑さはクイックソートのO lg n およびO n であるため、人々はしばしばクイックソートを使用します On2OnlgnOnlgnOlgnOn マージソート用。

On2


1
並べ替えに関しては、マージソートは安定しているがクイックソートは安定していないことも重要です。
wchargin

11

病理学的データとは、アルゴリズムのパフォーマンスを低下させるデータです。ハッシュテーブルの場合、病理学的データは衝突を引き起こすデータです。もちろん、それは使用されているハッシュ関数に依存します。

たとえば、ハッシュ関数が文字を一緒に追加する場合:hash("abcd") = 'a' + 'b' + 'c' + 'd'。病理学的データは次のようになります。

{"abcd", "dcba", "cbda", ...}。の順列はすべて"abcd"同じ位置にハッシュされるため、最初は避けようとしていたリンクリストになります。

非病理学的データは、病理学的ではないデータです。


-1

これについて考える別の方法:ハッシュキーは、データを含む個別の「ビン」のようなものです。データがすべてのビンに均等に分散され、「バランスが取れている」ことを期待/期待します。非病理学的データの場合、各ビンにはほぼ同じ量のデータが含まれています。データが病理学的(wrtキーハッシュアルゴリズム)である場合、すべてのビンはより少ないビンに「山積み」され、一部のビンははるかに少なくなります。これは非効率的です。なぜなら、ビンがいっぱいになると、検索時間が増加する(そして、ソートされていないリストを検索する効率が低下/収束する)からです。キーハッシュアルゴリズムを変更するだけで、データを「病理学的」から「非病理学的」またはその逆に変えることができるため、ハッシュアルゴリズムの重要性に注意してください。

また、「病理学的」と「非病理学的」の区別が適用される他の多くのアルゴリズムがあり、基本的に「病理学的」データがアルゴリズムを悪化させる場合があります(たとえば、概念はソートアルゴリズムでも使用されます)。統計的な概念を見ることができます。また、同じ問題に対して、あるアルゴリズムで「病理学的」なデータが別のアルゴリズムで「病理学的」ではない場合があります。等

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.