タグ付けされた質問 「algorithms」

数学とコンピュータサイエンスでは、アルゴリズムは、関数を計算するための明確に定義された命令の有限リストとして表現される効果的な方法です。アルゴリズムは、計算、データ処理、および自動推論に使用されます。

4
ネストされたループのBig-O
Big-Oでこの投稿を読ん でいます。次のコードはO(n ^ 2)であると表示されています。 bool ContainsDuplicates(String[] strings) { for(int i = 0; i < strings.Length; i++) { for(int j = 0; j < strings.Length; j++) { if(i == j) // Don't compare with self { continue; } if(strings[i] == strings[j]) { return true; } } } return false; } しかし、なぜか分かりません。 …

8
アルゴリズムを開発するとき、ペンと紙のフェーズをスキップするのは悪い習慣ですか?[閉まっている]
休業。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善してみませんか?この投稿を編集して、事実と引用で回答できるように質問を更新してください。 6年前休業。 アルゴリズムを開発するときは、最初にペンと紙、フローチャートなどを使用して、アルゴリズム自体に集中でき、そのアルゴリズムの実装について心配する必要がない(つまり、時間)。 ただし、ほとんどの場合、実際にアルゴリズムをオンザフライで開発する方が簡単です。つまり、一般的な方向性がわかるまで問題について少し考えてから、アルゴリズムが現れて機能するようになるまで、コードの記述と変更を開始します。 これは私が変えようとするべき悪い習慣ですか?

4
ファイルシュレッダーアルゴリズム
システムプログラミングの学習の一環として、ファイルシュレッダーの実装を検討しています。最も単純な方法(そしておそらく素朴に見える)は、データバイトをゼロに置き換えることです(OSがファイルを分割し、すべてのチャンクのバイトを置き換えることを知っています)。しかし、このトピックについてググると、複数のパスアルゴリズムを見つけて驚いています。 誰かがマルチパスのメリットを説明できますか?説明が見つかりませんでした。 ありがとう

3
データの「ソート解除」/同質性アルゴリズム
車輪を再発明しないように、私は誰かがデータ同質性アルゴリズムについてアイデアを持っているかどうか尋ねています。簡単な例: 私のデータにはいくつかの要素があります 数 色 フルーツ 文字 配列にはこれらの要素が約100あります。アルゴリズムは、同じ番号の2つのエントリが互いにできるだけ間隔をあけて、色や果物などが同じになるように要素を並べ替える必要があります。要素に優先順位を付けることができれば、さらに良いでしょう。100%に到達することはないように思えるので、作成するパスの数を指定し、結果を確認してから、より多くのパスを試します。 私が見つけることができる十分なgoogle-fuを持っていないだけで機能する何かがここにあるとしても、私は驚かないでしょう。

3
中央値を追跡する最良の方法は何ですか?
私は質問を読み、それを解決する方法についての入力を探しています。 数値はランダムに生成され、(拡張)配列に格納されます。中央値をどのように追跡しますか? 問題を解決できる2つのデータ構造があります。1つはバランスのとれたバイナリツリーで、もう1つは2つのヒープで、要素の最大の半分と最小の半分を追跡します。これら2つのソリューションの実行時間はと同じだと思いますO(n lg n)が、自分の判断はわかりません。 中央値を追跡する最良の方法は何ですか? 私の試み: この質問では、中央値を追跡するにはヒープが最良の方法だと思います。大きなヒープと小さなヒープの2つのヒープがあり、これらは順次である必要はありません。まず、配列の要素の平均値を計算します。要素が平均値より小さい場合は、numを小さなヒープに入れます。逆に、numを大きなヒープに入れました。大きいヒープの数が小さいヒープの数と等しい場合、小さいヒープの最大のヒープと大きいヒープの最小のヒープが中央値になります。2つのヒープのサイズが異なる場合は、大きいサイズのヒープからルート要素をポップし、小さいサイズのヒープのルートにプッシュします。大きなヒープの場合、ルート要素は最小の要素であり、小さなヒープの場合、ルート要素は最大の要素です。このようにして、2つのヒープのサイズが同じであるか、デジタル差がある場合、 このソリューションの実行時間はO(m * n)であると思います。mは、アンバランスヒープを調整する時間を意味します。 これは中央値を追跡する最良の方法ですか?

6
フロイドのアルゴリズム[終了]
休業。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善してみませんか?この投稿を編集して、事実と引用で回答できるように質問を更新してください。 4年前休業。 インタビューで尋ねられた場合、個人がアルゴリズムを理解する(これまで見たことがない)ことは可能ですか?同様に興味深い解決策がある他の問題は何ですか? 編集:私が言及している実際のアルゴリズムの混乱のため、それは フロイドのサイクル検出アルゴリズム、別名、亀とウサギのアルゴリズムです。

1
サブセット合計問題はNP完全ですか?
私が正しく知っている場合、サブセット合計問題はNP完全です。ここにn個の整数の配列があり、ターゲット合計tが与えられた場合、ターゲットから合計できる配列から数値を返す必要があります(可能な場合)。 しかし、この問題は、多項式時間でテーブルを構築するダイナミックプログラミング法では解決できません。nX tテーブルで、最後の数が出力に確実に含まれ、ターゲットがt- a [n]になる場合などです。その他の場合、最後の数は含まれず、ターゲットは同じtのままですが、配列のサイズはn-1になります。したがって、この方法で問題のサイズを小さくし続けます。 このアプローチが正しい場合、このn * tの複雑さは多項式ではありませんか?そして、これがPに属し、(私が聞いたことから)NP完全である場合、P = NP 確かに、私はここで何かを見逃しています。この推論の抜け穴はどこですか? おかげで、

6
科学論文のアルゴリズム[終了]
閉まっている。この質問はトピックから外れています。現在、回答を受け付けていません。 この質問を改善してみませんか? 質問を更新して、ソフトウェアエンジニアリングスタック交換のトピックになるようにします。 4年前休業。 私のアプリケーションでは、最近発行された科学論文に記載されているいくつかのアルゴリズムを組み合わせて使用​​したいと考えています。しかし、私はいくつかの法的質問があります。 Q1アルゴリズムが科学論文で公開され、著者が民間企業ではなく学界に所属している場合、それを同時に特許で保護できますか? 私はどこかで、公に入手可能な情報源で詳細に説明されたものの特許を取得することは不可能であると読みました。 Q2は、私はいくつかのアルゴリズムが論文に記載された使用している場合は、私はない持っている私のプログラムでは、「法的」または「約」のセクションに信用を与えるためにか、それは自主的なだけで、私の単純いいだろうか? クレジットしたくないということではありません。むしろ、プログラムが内部で何に基づいているのかを明らかにしたくないので、コピーキャットをできるだけ長く控えたいと思っています。

3
概念実証のシュートアウトを行うための最良の方法は何ですか?
私たちの会社が管理しているソフトウェアの新しいリリースに備えて、私はスケーラビリティの問題を解決するための本当に良いアプローチであると私が信じるものに取り組んできました。私は、紙面上のデザインが実際に私が望んでいることを検証するために、概念実証をまとめるつもりです。チームに説明すると、上司は反対の提案をしました。これは、問題のある領域を説明する方法に一部影響を受けています。上司はまた、代替案を評価するために2つの概念実証を行うという私の提案を受け入れました。 それでは、概念実証のシュートアウトを実行するための最良の方法は何ですか?ソリューションの評価に使用している客観的基準と主観的基準の両方があります。リンゴとこれらのかなり異なるアプローチのリンゴを比較していることを確認したいと思います。 スループットとサイズに関する要件があります。つまり、1秒あたり特定の数のオブジェクトを処理し、そのレートを1時間維持する必要があることがわかります。 スケーラビリティを評価する必要があります(コアを追加したり、オブジェクトの数を増やしたりして) 開発のしやすさ(主観的)を評価する必要がある アルゴリズムを理解するのがいかに簡単かを評価する必要があります(主観的) 私は物事がどのように傾くかについて私の理論を持っていますが、それが私の結果に影響を与えたくありません。このプロセスで客観性を維持する方法に関するあらゆる意見、および私が検討する必要があるかもしれないことは、大いに感謝されます。

3
3 of 9バーコードアルファベットの計算式は何ですか?
背景: 3の9バーコードアルファベット 3/9バーコードの簡単な構文 3 of 9バーコードのアルファベットと数字の背後にある公式は何ですか? たとえば、ASCIIの配置は比較的明確です。数字は33から始まり、大文字は65、小文字は97です。これらの開始点から、任意の数字または文字のASCIIコードを推測できます。各範囲の開始点も32 + 1の倍数です。 バーコードはランダムでシーケンスに欠けているようです。2番目のリンクの構文を使用する場合、これは3 of 9の最初の6文字です。 A 100-01 B 010-01 C 110-00 D 001-01 E 101-00 F 011-00 ここにはパターンはありません。それは何ですか?私はこれらの背後にあるデザイナーの意図したパターンに関心があります。それは、シーケンスに基づいて特定のキャラクターに対して上記のコードを提供できる独自のアルゴリズムを考案している誰かと同じくらいです。 私はこの質問をどこに置くか苦労しました。それは歴史、コンピューターサイエンス、情報科学ですか?StackExchange検索ではここで最も多くのバーコードヒットがあり、探している数式や説明の種類を説明するためにそれをASCIIに具体的に関連付けたかったため、プログラマを選択しました。 更新 好奇心旺盛な方のために、Code 39のすべての基本的な文字の完全なリストを以下に示します。http://jsfiddle.net/b9chris/LnX2e/2/ (ソース行は私のC#バーコードlibから取得されます) 提案されている簡略化された構文は、すべての文字がダッシュ位置のある5ビットの数値であることを暗示している可能性があるため、問題を少し混乱させる可能性があります。最後の4文字には多数のダッシュ(広いギャップ)があります。実際、これらのコードは、ほとんどのシンボルで奇数ビットのほとんどが0に設定されている9ビットの数値と考えるのが最善です。ここでは、それらは9ビットの数値です:http : //jsfiddle.net/b9chris/LnX2e/1/

11
オブジェクト指向のものは本当にそれほど重要ですか?[閉まっている]
現在のところ、この質問は、Q&A形式には適していません。私たちは回答が事実、参考文献、または専門知識によってサポートされることを期待しますが、この質問はおそらく議論、議論、投票、または拡張ディスカッションを誘います。この質問を改善でき、再開できると思われる場合は、ヘルプセンターにアクセスしてください。 8年前に閉鎖。 何年もの間、私はアルゴリズム関連の作業を行っており、インターネット検索用のスケーラブルなデータ構造を作成しています。情報検索関連の作業など 上記で述べたことには共通点があります。上記すべてのもの; C ++のような言語でコーディングされている場合は、それぞれ少数のクラスが必要です。私はそれらが興味深い問題であることを意味しますが、負荷の高いオブジェクト指向のものに関しては複雑ではありません。継承や仮想化などを使用したことがありません。ジェネリックプログラミングやテンプレートなどを頻繁に使用しています。 私はC ++が大好きです(-かさばるOOのもの、Erlangの作成者であるJoe Armstrongの言うところが好きなので、OO Worldではバナナを要求すると、大きなジャングルとバナナを抱えているゴリラができます)。私はJavaやPythonのような他の言語でのコーディングも楽しんでいます。 今私の質問は、私が取り組んでいるプロジェクト/アルゴリズムの種類を楽しんでいるからです。オブジェクト指向の要素を本当に学ぶ必要がありますか。継承、動的ポリモーフィズム(仮想)のようなものを使用するだけで、より優れたコーダー/デザイナーになれますか?または、関数型プログラミングの世界に移動できますか(私は今までそれを行っていません)、タスク/アルゴリズムに集中でき、名詞の王国に基づいたオブジェクト指向の要素、has-a、is-aルールを使用できないので、より魅力的です私? 簡単に言えば、OOは私が上記で言及した種類のプロジェクト/アルゴリズムについて私を助けることができますか? 編集: ここに追加する1つの非常に興味深いリンク: http://steve-yegge.blogspot.in/2006/03/execution-in-kingdom-of-nouns.html

12
コード作成の自動化にどれくらい近づきましたか?[閉まっている]
現在のところ、この質問は、Q&A形式には適していません。私たちは回答が事実、参考文献、または専門知識によってサポートされることを期待しますが、この質問はおそらく議論、議論、投票、または拡張ディスカッションを誘います。この質問を改善でき、再開できると思われる場合は、ヘルプセンターにアクセスしてください。 8年前に閉鎖。 また、現代のエディターによって挿入されたオートコンプリートや自動コードスニペット、またはポリモーフィックコードを意味するものではありません。しかし、与えられた入力とタイプ、および望ましい出力の情報を通過し、選択した言語で有効なコードを出力できるプログラムの最先端は何ですか。遺伝的プログラミング、遺伝子発現プログラミングは知っていますが、他の取り組みについては知りません。また、グーグルはあまり現れません。 この面での進歩を誰かが知っていますか? 編集:「有効なコードを出力する」と言うとき、私はAIまたは類似の何かがロジックと制御のフローを処理し、命令型言語で実装することを意味します。命令型言語のみです。それが難しい部分だからです。それでも、この種のアイデアをサポートするために開発されている新しい言語を知っている場合は、言及してください。おそらく、現在の言語セットは、最初に遭遇する可能性のある初期のAIには適していない可能性があります。

1
すべてのOpenStreetMapデータをインデックス付きの方法で効率的に保存するにはどうすればよいですか?
私が持っているPBFファイル国に関する以下の情報が含まれています。 それぞれ独自の経度、緯度、プロパティを持つノード。2Dスペースにポイントを格納するために使用されます。 それぞれのプロパティを持つ方法は、ノードを介して接続されます。道路、境界を保存するために使用されます。 このファイルの圧縮形式は80 MBですが、圧縮解除してDBに保存すると、592 MBになります。 ええ、それはベルギーだけの国のためのものです。フランス、ドイツ、イタリアを一緒に保管することを想像してください。 たとえば、アントワープからブリュッセルを通ってシャルルロワまでの単一の高速道路を見てみましょう。これは、高速道路のすべてのターンを格納するための大量のノードで構成されますが、これらすべてのターンが必要ですか?疑わしい。 私が何ができるようになりたいのか教えてみましょう: さまざまなズームレベルで地図を表示したい。少なくとも大都市、小都市、街路レベル。 2点間のルーティング情報を取得できるようにしたい。 GPS位置に最も近い道路を計算できるようにしたい。 データベース内のインデックスを使用して、場所を検索します。 ただし、最も重要なのは、データベースがモバイルデバイスに保存されるため、データベースが大きくなりすぎないことです。 そこで、2つの手法の組み合わせについて考えました。 すべての個々のノードの保存/処理を回避するための、表示目的の画像タイル。 道路に関する情報とともに、ルート情報の道路の端点を保存します。 この問題は、この情報だけではGPS位置に最も近い道路を計算できないことです。高速道路の曲がりを想像すると、2つの端点だけで高速道路にいると判断できません。エンドポイント間で中間ノードを保存することを考えていましたが、生成には非常にコストがかかると思います。また、道路の端点(Tスプリットのようなもの)を決定することは、T字型スプリットの上部に中点を保存する必要があるかどうかを理解する必要があるため、それほど簡単なことではありません。 したがって、画像タイルを使用すると表示が簡単です。しかし、ルーティングとGPS位置検索を行う簡単な方法を見つけることができません。どのようなストレージテクニックを検討する必要がありますか?80 MBファイルがのデータベースに変わるのは少し不便592 MBですが、そのサイズをできるだけ小さくしたいと思います... これをできるだけ効率的に行うにはどうすればよいですか?ディスクとCPUに関して。WP7をターゲットにしています...

1
自然にインスパイアされたアルゴリズムを学ぶための最良の方法は何ですか?[閉まっている]
閉まっている。この質問はトピックから外れています。現在、回答を受け付けていません。 この質問を改善してみませんか? 質問を更新して、ソフトウェアエンジニアリングスタック交換のトピックになるようにします。 6年前休業。 私は機械学習コース(スタンフォード)を修了し、非常に興味を持ちました。また、いくつかの調査の結果、自然にインスパイアされたアルゴリズムを学びたいと思いました。 次のようなリソースを見つけました。 賢いアルゴリズム:自然にヒントを得たプログラミングのレシピ(本) Wyss Institute(ウェブサイト) プログラミングゲームAIの例(書籍) 最初のリファレンスは見栄えがよく、疑似コードで完全に見えます(すべてをRuby、私の好みの言語で実装する可能性を与えてくれます)。また、すべてのコードにRuby実装を提供します。しかし、それは練習するための演習の欠如であり、これは重要な特徴だと私は思います。 2つ目は、この分野の研究を始めるきっかけとなったものですが、研究するコースや教材はありません。 3番目のものも見た目は良いですが、エクササイズが少ししかなく、集中しすぎている可能性があります(私はゲームが好きですが、自然にインスパイアされたアルゴリズムに関連する他のすべても研究したいと思っています)。また、それはC ++(ハード言語ではないが、Rubyに比べてその制限が気に入らない)に焦点が当てられており、Rubyまたは疑似コードで何かを優先します(ただし、私の優先事項ではありません)。 誰かが理論を補足するための演習も持っている何かを知っていますか?特に演習に焦点を当てて、学ぶべきことはありますか?(多分コースやビデオ講義)。

1
ベイズ分類器がスパムフィルタリングに使用されるのはなぜですか?
ベイジアンスパムフィルタリングについて読んでいて、理論は理解していると思いますが、メッセージに特定の単語が含まれている場合、メッセージがスパムである可能性を計算するためにこのアプローチが必要な理由がわかりません。 ユーザーによって「スパム」または「ハム」のいずれかに分類された一連のメッセージがあり、分類したい新しいメッセージ(選択した単語を含む)を受け取った場合、確実に行う必要があるのは、数を除算することだけです。単語を含むスパムメッセージの数、単語を含むメッセージの総数...なぜすべての方程式なのか?

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