タグ

Algorithmに関するtakuma510のブックマーク (18)

  • ID生成大全 - Qiita

    セッションIDやアクセストークン、はたまた業務上で使う一意の識別子など、いろんなところで一意のIDを生成しなきゃいけないケースが存在します。 そこで世間で使われているIDの生成方法について調べてみました。 選択基準 ID生成における要求として、以下の観点が上げられるかと思います。 生成の速度 大量にデータを短期間で処理し、それらにIDを付与する場合、ID生成そのものがボトルネックとなることがあります。 推測困難性 IDを機密情報と結びつける場合、IDを改ざんされても、機密データが見れないようにできている必要があります。 順序性 採番した順にデータをソートする必要がある場合は、IDがソートキーとして使えないといけません。 それぞれについて各生成手段を評価します。 ID生成の手段 データベースの採番テーブル 採番用のテーブルを作り、そこで番号をUPDATEしながら取得していくやりかたです。古い

    ID生成大全 - Qiita
  • はてなグループの終了日を2020年1月31日(金)に決定しました - はてなの告知

    はてなグループの終了日を2020年1月31日(金)に決定しました 以下のエントリの通り、今年末を目処にはてなグループを終了予定である旨をお知らせしておりました。 2019年末を目処に、はてなグループの提供を終了する予定です - はてなグループ日記 このたび、正式に終了日を決定いたしましたので、以下の通りご確認ください。 終了日: 2020年1月31日(金) エクスポート希望申請期限:2020年1月31日(金) 終了日以降は、はてなグループの閲覧および投稿は行えません。日記のエクスポートが必要な方は以下の記事にしたがって手続きをしてください。 はてなグループに投稿された日記データのエクスポートについて - はてなグループ日記 ご利用のみなさまにはご迷惑をおかけいたしますが、どうぞよろしくお願いいたします。 2020-06-25 追記 はてなグループ日記のエクスポートデータは2020年2月28

    はてなグループの終了日を2020年1月31日(金)に決定しました - はてなの告知
  • ACM/ICPC国内予選突破の手引き

    ACM/ICPCの2008年度の大会日程が公開されています。 国内予選は2008年7月4日,アジア地区予選会津大会は2008年10月25日~27日でホスト校は会津大学です。 参加登録締め切りは2008年6月20日です。 ここではACM/ICPC(ACM国際大学対抗プログラミングコンテスト: ACM International Collegiate Programming Contest)で 国内予選を突破するために必要な情報を載せています。 ACM/ICPC自体については2006年度の横浜大会のWebサイトなどを読んでください。 結局のところ,ACM/ICPCで良い成績を残すにはひたすら問題を解く練習をするしかありません。 ですが,出題される問題の多くはいくつかのカテゴリ,例えば探索問題やグラフ問題,あるいは幾何問題などに分類することができます。 つまり,「傾向と対策」が存在します。

  • 「最強最速アルゴリズマー養成講座」関連の最新 ニュース・レビュー・解説 記事 まとめ - ITmedia Keywords

    最強最速アルゴリズマー養成講座: そのアルゴリズム、貪欲につき――貪欲法のススメ アルゴリズムの世界において、欲張りであることはときに有利に働くことがあります。今回は、貪欲法と呼ばれるアルゴリズムを紹介しながら、ハードな問題に挑戦してみましょう。このアルゴリズムが使えるかどうかの見極めができるようになれば、あなたの論理的思考力はかなりのレベルなのです。(2010/9/4) 最強最速アルゴリズマー養成講座: 病みつきになる「動的計画法」、その深淵に迫る 数回にわたって動的計画法・メモ化再帰について解説してきましたが、今回は実践編として、ナップサック問題への挑戦を足がかりに、その長所と短所の紹介、理解度チェックシートなどを用意しました。特に、動的計画法について深く掘り下げ、皆さんを動的計画法マスターの道にご案内します。(2010/5/15) 最強最速アルゴリズマー養成講座: アルゴリズマーの登

  • Lock-freeとWait-freeアルゴリズム - Wikipedia

    Lock-freeとWait-freeアルゴリズムとは、共有データにロックをかけてアクセスを防ぐアルゴリズムとは違い、複数のスレッドが同時並行的に、ある対象データを壊すことなしに読み書きすることを可能にするアルゴリズムである。Lock-free とはスレッドがロックしないことを意味しており、全てのステップにおいてシステムが必ず進行する。これはLock-free ではミューテックスやセマフォといった、排他制御のためのプリミティブを使ってはならないことを意味する。なぜならロックを持っているスレッドの実行が中断した場合、全体の進行を阻止しうるからである。Wait-free とは、他のスレッドの動作に関係なく、スレッドがいかなる操作も有限のステップで操作を完了させられることを指す。あるアルゴリズムがLock-freeであるがWait-freeでないことはありうる。Wait-free なアルゴリズム

  • Programming Contests, Software Development, and Employment Services at TopCoder

    No negotiations. No onboarding. Work starts right away with our Talent Network.

    Programming Contests, Software Development, and Employment Services at TopCoder
  • 細かすぎて伝わりにくいTopCoderのコーディングスキル向上マジック

    細かすぎて伝わりにくいTopCoderのコーディングスキル向上マジック:最強最速アルゴリズマー養成講座(1/3 ページ) 競技プログラミングはレベルの高い人たちの集まり――そんな考えを持っている初心者の方、TopCoderはあなたのコーディングスキルを爆発的に高める魔法のような場です。今回は、初心者にこそお勧めしたいTopCoderの魅力について考えます。 教育的な観点から見るTopCoder 今回からTopCoderに関する実践的アルゴリズムを解説していく予定でしたが、序盤のうちに触れておきたいことがありましたので、今回の枕は“教育的視点から見るTopCoder”というテーマで少し書こうかと思います。 まず、最初に宣言しておきたいことは、この連載は初心者向きである、ということです。「どう考えても上級者向けだろう」という意見はたくさんの方から寄せられていますが、筆者は、まだプログラミングレ

    細かすぎて伝わりにくいTopCoderのコーディングスキル向上マジック
  • Sphere Online Judge (SPOJ)

    Are you passionate about coding? Try your luck in a brain challenge and join ADB Brain Wars contest! ADB Brain Wars is a contest organized for Polish programmers. Check the details at: adb-brain-wars.com Win great prizes and have a lot of fun! The elimination round begins on the 25th of March Register today! Seven days left to register for the Innopolis Open - Olympiad in Informatics for high scho

    Sphere Online Judge (SPOJ)
  • Algorithms by S. Dasgupta, C.H. Papadimitriou, and U.V. Vazirani

  • Recursion (computer science) - Wikipedia

    Most computer programming languages support recursion by allowing a function to call itself from within its own code. Some functional programming languages (for instance, Clojure)[5] do not define any looping constructs but rely solely on recursion to repeatedly call code. It is proved in computability theory that these recursive-only languages are Turing complete; this means that they are as powe

    Recursion (computer science) - Wikipedia
  • Tower of Hanoi - Wikipedia

    This article is about the mathematical disk game. For the card game, see Tower of Hanoy. For the Vietnamese skyscraper, see Keangnam Hanoi Landmark Tower. A model set of the Tower of Hanoi (with 8 disks) An animated solution of the Tower of Hanoi puzzle for T(4, 3) Tower of Hanoi interactive display at Mexico City's Universum Museum The Tower of Hanoi (also called The problem of Benares Temple[1]

    Tower of Hanoi - Wikipedia
  • コーディングに役立つ! アルゴリズムの基本 - @IT

    連載ではアルゴリズムとデータ構造を学ぶ、または学び直すことで、プログラミングのスキルを深めていきます。アルゴリズムは学問として取り扱われることが多いですが、この連載では開発の現場に役立つスキルを身に付けることを目的とします。 機械学習/Deep Learningが気になる人も要注目、「アルゴリズム」の基が学べる無料の電子書籍150ページ 人気連載まとめ読み! @IT eBook(29) 人気過去連載を電子書籍化して無料ダウンロード提供する@IT eBookシリーズ。第29弾では「コーディングに役立つ!アルゴリズムの基」10回分を1冊のPDFとしてまとめた。アルゴリズムとは何か? なぜ学ぶべきなのだろうか?

  • 再帰的アルゴリズム - ハノイの塔

    ハノイの塔は1883年にフランスのE.Lucas(リュカ)が考案したゲームと言われています。著書『数学遊戯』の中にあるそうです。  これは次のようなゲームです。 台の上に3の棒A,B,Cが固定されていて,そのうちの一に何枚かの円盤が棒を通して重ねられています。円盤は下へいくほど半径が大きくなっています。 このとき,次の規則に従って,円盤をAからBに移動してください。 一回に一枚の円盤しか動かしてはいけません。 移動の途中で円盤の大小を逆に積んではいけません。常に大きい方の円盤が下になるようにして下さい。 棒A,B,C以外のところに円盤を置いてはいけません。 このゲームは元々手で実際にやるものですし,実際に玩具としてこのようなものがあるそうです。しかしここではこれをプログラミングの問題,即ち,解く手順をコンピュータを使って求める問題としましょう。 プログラミングの問題

    takuma510
    takuma510 2011/11/05
    hanoi
  • 再帰でハノイの塔を攻略せよ

    プログラマたるものアルゴリズムとデータ構造は知っていて当然の知識です。しかし、教科書的な知識しか知らなくて、実践的なプログラミングに役立てることができるでしょうか(編集部) 最大公約数を求める 「最大公約数を求めるプログラムを作って」といわれて、すぐに書けるでしょうか。 一般的には小学校で最大公約数の求め方を教わります。2つの数を共通する素数で割っていくというものです。そのままプログラムしようとすると、まず素数を求めるところから始めなければならず、少々難しそうです。 最も単純にやるとすれば、2つの数の小さいほうから1ずつ減らして両方の数を割っていき、どちらも余りが0になるものを求めるという方法でよいでしょう。しかしこのやり方は無駄が多そうです。 「ユークリッドの互除法」という方法を使うと簡単にプログラムにすることができます。ユークリッドの互除法とは以下のような方法で最大公約数を求めるやり方

    再帰でハノイの塔を攻略せよ
  • http://w3-denki.maizuru-ct.ac.jp/siryou/text/jyoho3/kouki1/hanoi/frame.htm

  • 高速な安定ソートアルゴリズム "TimSort" の解説 - Preferred Networks Research & Development

    先日、TimSortというソートアルゴリズムが話題になりました。TimSortは、高速な安定ソートで、Python(>=2.3)やJava SE 7、およびAndroidでの標準ソートアルゴリズムとして採用されているそうです。 C++のstd::sort()よりも高速であるというベンチマーク結果1が話題になり(後にベンチマークの誤りと判明)、私もそれで存在を知りました。実際のところ、ランダムなデータに対してはクイックソート(IntroSort)ほど速くないようですが、ソートというシンプルなタスクのアルゴリズムが今もなお改良され続けていて、なおかつ人々の関心を引くというのは興味深いものです。 しかしながら、オリジナルのTimSortのコードは若干複雑で、実際のところどういうアルゴリズムなのかわかりづらいところがあると思います。そこで今回はTimSortのアルゴリズムをできるだけわかりやすく解

    高速な安定ソートアルゴリズム "TimSort" の解説 - Preferred Networks Research & Development
  • アルゴリズムの勉強のしかた - きしだのHatena

    この記事で、アルゴリズムの勉強はアルゴリズムカタログを覚えることじゃないよということを書きました。 プログラムの理論とはなにか アルゴリズムの勉強というのは、スポーツで言えば腕立て伏せや走り込みみたいな基礎体力を養うようなもので、「ソートなんか実際に自分で書くことないだろう」とかいうのは「サッカーは腕つかわないのに腕立ていらないだろう」とか「野球で1kmも走ることなんかないのに長距離の走り込みいらないだろう」とか言うようなものです。 Twitterでアルゴリズムの勉強とはなにかと尋ねられて、「アルゴリズムの基的なパターンを知って、それらの性質の分析のしかたをしって、いろいろなアルゴリズムでどのように応用されているか知って、自分が組むアルゴリズムの性質を判断できるようになることだと思います。 」と答えたのですが、じゃあ実際どういうで勉強すればいいか、ぼくの知ってるからまとめてみました。

    アルゴリズムの勉強のしかた - きしだのHatena
  • 1