タグ

関連タグで絞り込む (0)

  • 関連タグはありません

タグの絞り込みを解除

AlgorithmとALgorithmとProgrammingに関するagwのブックマーク (1,893)

  • kd-treeの構築と近傍要素の抽出 - imHo

    フォトンマップを作った後、実際に描画するときに放射輝度を求めるために視点からの交点近辺のフォトンを取り出す必要がある。この処理を高速に行うためにはkd-treeを使うといい、という話。 でもいきなり3D用のkd-treeのルーチンを書いて動かせる自信がない…なので2Dのテストプログラムを作る。 kd-treeテスト kd-treeの構築 木をバランスさせるため、フォトンを記録し終わってから構築する 分割する軸を選ぶ(x,y,zで一番長い軸にしてみた) 分割軸に沿ってソート 左右でバランスするように、左右の要素数を決める(葉が左詰になって欲しいので、あれこれ計算) // 木を分割する中央のインデクスを求める int select_median_index(int n) { // 左詰にするため、あれこれ計算 int h = log2(n); int s = 1 << h; int d = n

    kd-treeの構築と近傍要素の抽出 - imHo
  • ユークリッドの互除法 - Wikipedia

    英語版記事を日語へ機械翻訳したバージョン(Google翻訳)。 万が一翻訳の手がかりとして機械翻訳を用いた場合、翻訳者は必ず翻訳元原文を参照して機械翻訳の誤りを訂正し、正確な翻訳にしなければなりません。これが成されていない場合、記事は削除の方針G-3に基づき、削除される可能性があります。 信頼性が低いまたは低品質な文章を翻訳しないでください。もし可能ならば、文章を他言語版記事に示された文献で正しいかどうかを確認してください。 履歴継承を行うため、要約欄に翻訳元となった記事のページ名・版について記述する必要があります。記述方法については、Wikipedia:翻訳のガイドライン#要約欄への記入を参照ください。 翻訳後、{{翻訳告知|en|Euclidean algorithm|…}}をノートに追加することもできます。 Wikipedia:翻訳のガイドラインに、より詳細な翻訳の手順・指針につい

    ユークリッドの互除法 - Wikipedia
  • 素数判別、素因数分解<アルゴリズム<Web教材<木暮

    学習のポイント 素数判別、素因数分解の基的なアルゴリズムを理解します。 キーワード アルゴリズム、素数、剰余、素数判別、エラトステネスのふるい、素因数分解 これまでは、素数研究が社会に直接関係することはあまりありませんでした。ところが、電子メールなどの暗号化が必要になりました。その暗号鍵、復号鍵では、「非常に大きいを素因数分解する計算には非常に時間がかかる」ことをベースにしています(→参考:「公開鍵暗号方式の原理」)。そのため、素数に関する関心が高まっているのです。 2,3,5,7,11,13,17,…など、1と自分自身でしか割り切れない数を素数といいます。12=4×3や、18=2×9のように、素数ではない数のことを合成数といい、2、3、4、9など、合成数を割り切れる数を約数といいます。そして、2や3など約数自体が素数であるとき、その約数を素因数といいます。 素数を扱うアルゴリズムは、大

  • ユークリッドの互除法 - inamori’s diary

    ユークリッドの互除法(Euclidean algorithm)は、最大公約数を求めるためのアルゴリズムです。 割り切れるまで割り算を繰り返します。例えば、234と177の最大公約数を求めるには、 234 ÷ 177 = 1 余り 57 177 ÷ 57 = 3 余り 6 57 ÷ 6 = 9 余り 3 6 ÷ 3 = 2 余り 0 だから、最大公約数は3となります。 コードは、再帰を使って書くと簡単です。Cで書くと、 #include int GCD_core(int a, int b) { int d = a % b; if(d == 0) return b; else return GCD_core(b, d); } int GCD(int a, int b) { /* Pythonの仕様に合わせてある */ if(a == 0) return b; else if(b == 0) r

    ユークリッドの互除法 - inamori’s diary
  • 互いに素 - inamori’s diary

    互いに素(coprime)とは、与えられた2つの整数が共通の素因数を持たないことを意味します。 例えば、4と6なら、 4 = 22 6 = 2•3 だから、2が共通の素因数となり、互いに素ではありません。12と25なら、 12 = 22•3 25 = 52 だから、互いに素です。 プログラムでこれを調べたいときは、最大公約数が1かどうかを調べます。1なら互いに素、そうでなければ互いに素でないことになります(負数を扱うときは注意)。 互いに素は、Project Eulerを解いていても意外とよく出てくる概念です。例えば、辺の長さがa, b, cの三角形を考えるとき、これらが互いに素でなければ、最大公約数で割った辺の長さの三角形と相似なので、こちらだけ考えればよい、などというように使われます。 関連 ユークリッドの互除法

    互いに素 - inamori’s diary
  • 画像処理 (1) シーム・カービング

    画像を拡大・縮小する場合、通常利用される方法として、「最近傍法(Nearest Neighbour)」や「線形補間法(Bilinear Interpolation)」に代表されるサンプル補間法があることを以前紹介しました。最近、サンプル補間法とは概念のまったく異なる画像の拡大・縮小方法として「シーム・カービング(Seam Carving)」が注目され、すでに実用的なアプリケーションも誕生しています。この手法は、画像のリサイズ処理だけに限らず、特定のオブジェクトの除外や再配置など、応用範囲が非常に広いため、これからも様々な目的に応用される可能性があるアルゴリズムです。今回は、この「シーム・カービング」について紹介したいと思います。 ブラウザは、世界中に散らばった様々なコンテンツを閲覧することができる便利なツールです。その中で、画像や動画を表示したり、場合によっては音楽を聴くこともできますが、

  • アルゴリズムの紹介

     ここでは、プログラムなどでよく使用されるアルゴリズムについて紹介したいと思います。 元々は、自分の頭の中を整理することを目的にこのコーナーを開設してみたのですが、最近は継続させることを目的に新しいネタを探すようになってきました。まだまだ面白いテーマがいろいろと残っているので、気力の続く限りは更新していきたいと思います。 今までに紹介したテーマに関しても、新しい内容や変更したい箇所などがたくさんあるため、新規テーマと同時進行で修正作業も行なっています。 アルゴリズムのコーナーで紹介してきたサンプル・プログラムをいくつか公開しています。「ライン・ルーチン」「円弧描画」「ペイント・ルーチン」「グラフィック・パターンの処理」「多角形の塗りつぶし」を一つにまとめた GraphicLibrary と、「確率・統計」より「一般化線形モデル」までを一つにまとめた Statistics を現在は用意して

  • 文字列の中から効率良くキーワードを探し出せ

    文字列の中から効率良くキーワードを探し出せ:コーディングに役立つ! アルゴリズムの基(7)(1/4 ページ) プログラマたるものアルゴリズムとデータ構造は知っていて当然の知識です。しかし、教科書的な知識しか知らなくて、実践的なプログラミングに役立てることができるでしょうか(編集部) 前回「Firebugで探索アルゴリズムを見ていこう」では、数値の集合の中から特定の数値を探索しました。今回は文字列の中から検索ワードを探索してみましょう。 UNIXのコマンドならgrep、Javaなどのプログラムなら文字列のindexOfメソッドなどに相当する処理です。 力任せ法 それでは例によって最もベタなアルゴリズムの紹介から始めましょう。 文字列の中に検索ワードがあるかどうか調べます。文字列の先頭から1文字ずつ検索ワードと比較していきます。不一致があったら文字列の2文字目から1文字ずつ検索ワードと比較し

    文字列の中から効率良くキーワードを探し出せ
  • 継続のすばらしさ - methaneのブログ

    Haskellでやると書いておいて、Pythonでやっちゃう罠。 Pythonがサポートしている中途半端な継続ことgeneratorでsortすれば、遅延評価と同じく、「先頭n個だけ使う」という用途では後半のsortを実行しないで済む。 >>> l = [3,5,2,1,4,5,8,2] >>> def lazy_sort(lst): if len(lst) == 0: return mid = lst[0] left = [] right= [] for v in lst[1:]: if v < mid: left.append(v) else: right.append(v) lg = lazy_sort(left) for y in lg: yield y yield mid rg = lazy_sort(right) for y in rg: yield y >>> s = laz

    継続のすばらしさ - methaneのブログ
  • Math.random() でランダムな整数を取得する方法

    Flash 4では、関数「random()」でランダムな整数を取得できましたが、Flash 5 以降ではこの関数は使用禁止となっており、「Math.random」メソッドの使用が推奨されています。(『AcrionScript リファレンスガイド』 p.324~) 「Math.random」は、0 以上 1 未満の浮動小数で結果を返します。したがって、乱数を整数で得るには、工夫が必要です。 ※「Math.random」は、0 以上 1 未満の浮動小数で結果を返します(『ActionScript リファレンスガイド』の「Math.random」の項には「0.0~1.0」とありますが、1.0「以下」ではなく ECMA 仕様にもとづき1.0「未満」です)。 結果を整数で得る 結果を整数に変換するには、2 つのメソッドが考えられます。 ひとつは、「Math.round」です。引数の数値を小数点以下

  • 順列 - Wikipedia

    この項目では、順列について説明しています。初等組合せ論における permutationについては「置換」をご覧ください。 数え上げ数学における順列(じゅんれつ、英: sequence without repetition, partial permutation、仏: arrangement)は、区別可能な特定の元から有限個を選んで作られる重複の無い列をいう[1]。 初等組合せ論における「写像12相」はともに 有限集合から k-個の元を取り出す方法として可能なものを数え上げる問題に関するものである[2]。取り出す順番を勘案するのが k-順列、順番を無視するのが k-組合せである。 定義 1 位数 n の有限集合 E と自然数 k に対し、E の元からなる k-順列とは {1, 2, …, k} から E への単射を言う。 定義 2 位数 n の有限集合 E と自然数 k に対し、E の元か

  • 単調増加関数とは何か?

  • 決定的アルゴリズム - Wikipedia

    この記事は検証可能な参考文献や出典が全く示されていないか、不十分です。 出典を追加して記事の信頼性向上にご協力ください。(このテンプレートの使い方) 出典検索?: "決定的アルゴリズム" – ニュース · 書籍 · スカラー · CiNii · J-STAGE · NDL · dlib.jp · ジャパンサーチ · TWL (2022年3月) 決定的アルゴリズム(けっていてきアルゴリズム、英: deterministic algorithm)は、計算機科学におけるアルゴリズムの種類であり、その動作が予測可能なものをいう。入力を与えられたとき、決定的アルゴリズムは常に同じ経路で計算を行い、常に同じ結果を返す。決定的アルゴリズムは最も研究の進んでいるアルゴリズムであり、その多くは実際のコンピュータで効率的に実行できる実用性を備えている。決定性アルゴリズムと言うことも多い。 決定的アルゴリズムは

  • 乱択アルゴリズム - Wikipedia

    乱択アルゴリズム(らんたくアルゴリズム)、ランダム・アルゴリズム(英: randomized algorithm)または確率的アルゴリズム(かくりつてきアルゴリズム、(英: probabilistic algorithm)は、その論理の一部に無作為性を導入したアルゴリズムである。通常のアルゴリズムでは自然数を順番にあてはめるような決定的な部分で、乱数による非決定的な選択を入れることで、「平均的に」よい性能を実現することを目的とすることがある。形式的には、乱択アルゴリズムの性能はランダムビット列で決定される確率変数となる。その期待値を期待実行時間[1]と呼ぶ。最悪の場合に関して「無視できる」ほどに低い確率であることが、一般に、この類のアルゴリズムが効果的である要件となる。 n 個の要素からなる配列から「a」という要素を探す問題を考える。この配列の各要素は半分が「a」で残りが「b」である。単純

  • Man plans, god laughs.

    Li-Yi Wei 魏立一 [research] [about]

  • Perlin Noise

    Many people have used random number generators in their programs to create unpredictability, make the motion and behavior of objects appear more natural, or generate textures. Random number generators certainly have their uses, but at times their output can be too harsh to appear natural. This article will present a function which has a very wide range of uses, more than I can think of, but bas

  • Ken's Academy Award

    In 1997 I received a Technical Achievement Award from the Academy of Motion Picture Arts and Sciences for work I had done on procedural texture. For example, the NYU Torch on the right is made entirely from procedural textures (except for the text along the bottom). The flame, background, and metal and marble handle are not actually 3D models - they are all entirely faked with textures. A hi-res i

  • Research

    In August 2006, I joined the Computer Science Department at UMass Amherst as an assistant professor. Here is my new webpage. Publications Efficient Wavelet Rotation for Environment Map Rendering Rui Wang, Ren Ng, David Luebke, and Greg Humphreys Proceedings of Eurographics Symposium on Rendering 2006 paper video All-Frequency Relighting of Glossy Objects Rui Wang, John Tran and David Luebk

  • 驚くべきテクニックで「スーパーマリオ」をクリアしていく人工知能

    ゲームゲームをクリアする時代に? 「New スーパーマリオブラザーズ Wii」で、初心者向けに新しく搭載されるという噂の「スキップ機能」は、もしかしたらこんな感じなのかもしれません。 土管や砲台、敵キャラクターなど多くの障害物が設置されたコース上を、驚くべきスムーズさで、マリオがひたすら右へ右へと進んでいくこちらの動画。迫りくる敵の間を難なくすり抜けたり、パックンフラワーの間をギリギリでくぐり抜けていったりと、確かに上手いプレイであることは分かるのですが、何かがちょっと違うことに気付いたでしょうか。 実はこれ、すべてAI制御による自動プレイ。マリオの前方に表示されている赤い放物線は、この先進むルートの候補を表したもので、どうやらこの中から安全で、なおかつ最短でゴールにたどり着けるルートを自動で選択するようプログラムされているようです。途中、何度かはヒヤリとさせられる場面もあるのですが、き

    驚くべきテクニックで「スーパーマリオ」をクリアしていく人工知能
  • 【インフォシーク】Infoseek : 楽天が運営するポータルサイト

    日頃より楽天のサービスをご利用いただきましてありがとうございます。 サービスをご利用いただいておりますところ大変申し訳ございませんが、現在、緊急メンテナンスを行わせていただいております。 お客様には、緊急のメンテナンスにより、ご迷惑をおかけしており、誠に申し訳ございません。 メンテナンスが終了次第、サービスを復旧いたしますので、 今しばらくお待ちいただけますよう、お願い申し上げます。