タグ

algorithmに関するzaki1010のブックマーク (20)

  • DocBaseの同時編集機能を実現しているアルゴリズム – KRAY Inc.

    はじめに 皆さんはGoogleドキュメントやHackMDを使ったことはあるでしょうか。これらのツールは「ネット越しに同時に複数の人で1つのドキュメントを編集できる」という特徴を持っています。お互いの編集がリアルタイムに反映されるので、相手が何を書くのかを意識することなく、簡単にドキュメントを複数人で編集することができます。これを実現するためには、同時編集に参加しているユーザ全員の編集内容がネットワークの延滞に影響されることなく、それぞれの編集内容をうまい具合にマージして反映してくれるような賢いアルゴリズムが必要になります。今回はこのアルゴリズムに関して書きます。 編集内容のマージとは 編集内容をうまい具合にマージしなければいけないケースを考えてみます。 AさんとBさんが次のドキュメントを同時編集するとします。最初は、お互いブラウザ上では次のように見えています。当然、この状態ではお互いに見え

    DocBaseの同時編集機能を実現しているアルゴリズム – KRAY Inc.
  • 30 分でわかる!アルゴリズムの基本

    このスライドは、2022/4/14 に実施されたイベント『問題解決のための「アルゴリズム × 数学」- Forkwell Library #1』の基調講演を加筆修正したものです。実際の講演(35 分)を見たい方は、以下の URL をご覧ください。 https://www.youtube.com/watch?v=2OrsR37_GdM 【目次】 第一章 アルゴリズムとは(pp. 1~19) 第二章 アルゴリズムの例 A:迷路の探索(pp. 20~79) 第三章 アルゴリズムの例 B:プログラムのデバッグ(pp. 80~126) 第四章 アルゴリズムの例 C:映画鑑賞の最適化(pp. 127~154) 第五章 講演のまとめ(pp. 155~162)

    30 分でわかる!アルゴリズムの基本
  • はじめに - アルゴリズムとデータ構造大全

    はじめに このドキュメントは,主に競技プログラミングで出題される問題を解く際に利用できるアルゴリズムやデータ構造をまとめたものです.特定の問題にはあまりフォーカスしないため,問題を解く際の考察の仕方等の内容はありません.詳しく,正確に,分かりやすく書いていこうと思っています. このドキュメントは執筆途中です. 想定する読者 C++を用いたプログラミングに慣れている方を読者として想定しており,C++言語の仕様や,文法にはあまり触れません.また,計算量という用語についても説明しません.ただし,償却計算量など,計算量の見積もりが複雑なものについては必要に応じて説明します. コードについて このドキュメントで登場するコードは,可読性向上のため,以下のようなコードがファイルの先頭に記述してあることを前提としています.また,適切な問題を用いてコードの検証がなされている場合は,コード周辺にのように,検証

  • 操車場アルゴリズム - Wikipedia

    中置記法からRPNへの変換は、数式を簡単に単純化するのにも使える。そのためにはRPNの式を評価するようにし、値がヌルの変数が出てきたり、値がヌルの演算子が出てきたら、そのパラメータと共に出力に書き込めばよい(これは単純化であり、パラメータが別の演算子だった場合には問題が生じる)。ヌルのパラメータがない演算子の場合は、単にその値を出力に書き込めばよい。この技法は明らかにあらゆる単純化を含んでいるわけではない。それは定数畳み込みの最適化に近い。 C言語での実装例[編集] #include <string.h> #include <stdio.h> #include <stdbool.h> // 演算子 // 優先順位 : 演算子 : 結合性 // 4 :  !  : 右結合性 // 3 : * / % : 左結合性 // 2 : + -  : 左結合性 // 1 : =  : 右結合性 int

    操車場アルゴリズム - Wikipedia
  • アルゴリズムビジュアル大事典

    このサポートページでは、マイナビ出版発行の書籍「アルゴリズムビジュアル大事典」にて作成しましたシンボル、アニメーション、疑似コードを掲載いたします。また、内容のアップデートを行ってまいります。詳しい解説は、書をご参考にしてください。 アニメーションコントローラの使い方はクイックマニュアルでご確認頂けます。 補足情報が表示されているトピックにつきましては、ご注意ください。その他の訂正等は正誤表をご覧ください。ご質問、不具合等のご報告は、ご遠慮なくy.watanobe@gmail.com(渡部)までお送りください。

  • 整数を可逆スクランブルする - C Sharpens you up

    2年前につぶやいた内容の詳しい説明。 32ビット整数をとりあえずスクランブルするすごく簡単な方法に気付いてしまった。なにか奇数をかけると、それにかければ元の数に戻るような奇数が必ずひとつあるから、それを力任せで見つけてしまえばいいんだ。ビット回転→奇数をかけるを3回繰り返すとほぼバラバラ。— ゆば大好き (@yuba) October 18, 2011 整数を、暗号ライブラリ使うほどじゃないんだけどスクランブルしたいことってあるんですよね。たとえば、IDを連番で振ってるんだけど連番だってことがユーザーにわかってしまうと具合が悪いとか。そういうときの簡単なスクランブル方法です。ただし、符号なし整数でしか使えないのでこの時点でJavaは対象外ごめんなさい。 まず32ビット整数版のC,C++,C#で動くコードです。 uint Scramble(uint v) { // 奇数その1の乗算 v *=

    整数を可逆スクランブルする - C Sharpens you up
  • 重複のない10桁の数字をIDとして採番するアルゴリズムを教えて下さい。…

    重複のない10桁の数字をIDとして採番するアルゴリズムを教えて下さい。 但し、下記の条件があります。 - 最低でも1億以上、採番可能なもの - 時系列や連番など推測されやすいものはNG - 基的にデータベースを使用せずアルゴリズム内だけて採番(但しカウントアップ用で使うならOK) - 数字が一意であると保証されていること 以上になります。 PHPのコードで書かれてると、なお有り難いです、 宜しくお願いします。

  • ID生成大全 - Qiita

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

    ID生成大全 - Qiita
  • アルゴリズムの勉強のしかた - きしだのHatena

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

    アルゴリズムの勉強のしかた - きしだのHatena
  • レコメンドシステム入門 Javascriptで実装する|es

    レコメンド(推薦システム)に関して素晴らしい記事があったので訳してみました。訳に難があるが、そこはご勘弁ください。 プログラム実行してみると理解できると思います。入門者に打って付けの記事です。 以下、文。 インターネットの世界はレコメンドで溢れていますね。 Amazonのように商品を購入するeコマース・サイト、Facebookのようなソーシャルネットワーク、YoutubeやNetflixのようなビデオ/映画サイトなど。これらのサイトに共通するのは、あなたに新しいものを推薦するために、映画、商品と友人などの過去のデータを使うことです。 この記事では、レコメンド機能がJavaScriptで、どのように動くか簡単に紹介します。推薦システムを実現するための、異なるアプローチも見ていきます。最終的にはアルゴリズムを切り替えただけで、結果を出力できるようにします。映画評論家の小さいデータセットと、M

    レコメンドシステム入門 Javascriptで実装する|es
  • 仕組みが分かれば、スマホなどいらぬ……ッ! 肉眼のみで解読するQRコード講座

    撮影することでURLなどを読み取れる正方形の模様、QRコード。スマホなどから利用するのが一般的ですが、どうしてもスマホが取り出せないときは、どうやって読み取ればいいのでしょうか。 ご存じの通り、人間にも目というカメラがあります。実は文明の利器なんて使わなくても、人力で解読できるのです。それでは、QRコードリーダーをあなたの脳にもインストールしてみましょう。 今回はこのQRコードを自力で読んでみましょう(CMANで作成) QRコードの基構造を知ろう! QRコードの構造。緑色部分は位置補正に必要なパターン、赤色部分はQRコードの読み取りに必要な情報(矢印の向きに読む) 内容を読み取る前に、そのための準備作業から始めましょう。 まず着目してもらいたいのが、QRコードの隅などにある四角形の模様です。これはカメラで読み取ったときの角度の違いを補正するためのもの。これ自体は読む必要がありませんが、周

    仕組みが分かれば、スマホなどいらぬ……ッ! 肉眼のみで解読するQRコード講座
  • SQLトランザクション分離 実践ガイド | POSTD

    (注:2017/10/16、いただいたフィードバックを元に翻訳を修正いたしました。) (注:2017/10/11、いただいたフィードバックを元に翻訳を修正いたしました。) データベースのドキュメントで分離レベルを目にして、軽く不安を感じつつ、あまり考えないようにしたことはないでしょうか。トランザクションの日常の使用例できちんと分離について言及しているものはほとんどありません。多くはデータベースの初期設定の分離レベルを利用しており、後は運頼みです。しかし、来、理解しておくべき基的なトピックであり、いくらか時間を投入してこのガイドの内容を学習すれば、もっと快適に作業できるようになるでしょう。 私はこの記事の情報を学術論文、PostgreSQLドキュメンテーションから集めました。分離レベルの 何たる かだけでなく、適用の正確さを保持しつつ最大速度で使うにはいつ使うべきか、という疑問に答えるべ

    SQLトランザクション分離 実践ガイド | POSTD
  • GPUとセルオートマトンで経路探索問題を解いてみる | POSTD

    前回は、グラフィックカード上だけで コンウェイのライフゲームを実行するアイデアを説明しました 。このアイデアは、3つ以上の状態を有するオートマトンを含め、 どのような セルオートマトンにも当てはめることができます。今回の投稿では、二次元グリッドの 最短経路問題 をGPUだけで解決するのに、このアイデアを活用してみたいと思います。CPUによる従来の検索と比べても、その速さは遜色ありません。 JavaScript側の状態は基的に以前と同様なので(2つのテクスチャと、それらを繋いでオートマトンを次のステップに進めるフラグメントシェーダ)、ここでは説明は割愛します。変更したのは次の2点、(オートマトンの全ての状態を表現する)セルの状態のエンコーディングと(新しいルールをプログラムする)フラグメントシェーダです。 オンラインデモ ( ソース ) デバッグや実験のために使ったセルオートマトンの純粋な

    GPUとセルオートマトンで経路探索問題を解いてみる | POSTD
  • パーリンノイズを理解する | POSTD

    この記事の目的はKen Perlinの改良パーリンノイズを分かりやすく分析し、お伝えすることです。記事内のコードはC#で書かれており、自由にご利用いただけます。最終形のみを見たい方は、こちらから最終的なソースをご確認ください。 パーリンノイズは手続き的なコンテンツ生成によく使われる、非常に強力なアルゴリズムです。ゲームや、映画などの視覚媒体に特に有用です。パーリンノイズの開発者であるKen Perlinは、この最初の実装でアカデミー賞を受賞しました。彼が2002年に発表した改良パーリンノイズについて、私はこの記事で掘り下げていきます。パーリンノイズは、ゲーム開発においては、波形の類や、起伏のある素材、テクスチャなどに有用です。例えば手続き型の地形(Minecraftのような地形はパーリンノイズで生成できます)、炎のエフェクト、水、雲などにも使えます。これらのエフェクトのほとんどが2次元、3

    パーリンノイズを理解する | POSTD
  • これは何ソートって呼ぶのかな - 自明でない日記

    先月から、アルゴリズムの勉強と C 言語の勉強を始めたはずなのですが、気づけば今月はほとんど何もしていないことに気づきました。 で、それらの勉強をそろそろ再開したいのですが、その前に、今回は、ちょっと思い出話を書き残してみたいと思います。 証券事務代行会社での非事務的アルバイト 学生の頃、ある証券事務代行の会社でアルバイトをしたことがあります。 その会社では、半期末 (毎年 3 月末と 9 月末) に近づくと、名義人の書き換えのため、大量の株券の束が届くようになるので、それらの仕分け作業のために短期的な学生アルバイトを雇っていたのでした。 無造作に箱に投げ込まれ作業場に届く株券の束には、通し番号が振ってあります。 それらを通し番号の順に並べ替えて、事務処理をおこなう人たち (こちらは主婦層中心のアルバイトでした) に配るというのが、わたしを含む男子学生アルバイトのおもな仕事でした。 通し番

    これは何ソートって呼ぶのかな - 自明でない日記
    zaki1010
    zaki1010 2014/04/22
    基数ソートの実例。
  • 人力ソート・・・200枚の数字が書かれた紙を数字順に並べる効率の良い方法を考えて下さい。…

    人力ソート・・・200枚の数字が書かれた紙を数字順に並べる効率の良い方法を考えて下さい。 ・200枚のA4用紙に1-200までの数字が書かれており、ランダムな順番に並んでいます。 ・これをより効率的に手動で並べ替える方法を知りたいです。 ・作業に取り掛かれる人間は3人までとします。 ・ペンや紙、付箋などの一般的な事務用品は使用OKです。 ・使える部屋の広さは6畳程度です。 ・「効率」の定義は時間または肉体的・精神的労力だと思って下さい。

  • スラッシュドットに聞け:物理的にモノや人をソートするときはどうしてる? | スラド IT

    先日領収書の束やその他の書類を日付順に分類していたのだが、書類ソーターの類を使わずにソートしていたところ小分けの山がたくさんできあがってしまい、しまいにはどの山が何だったか分からなくなってしまった。 ふとコンピュータサイエンスの授業で習ったソートアルゴリズムを使えばいいのではと思い立ち、紙の山をすべて元に戻し基数ソートをかけたところすんなりと作業を終えることができた。その後別の作業でクイックソートやマージソートも試すことができた。 そこで質問なのだが/.erの皆は物理的にソートする際どんなアルゴリズムを使っているだろうか?

  • Quick-sort with Hungarian (Küküllőmenti legényes) folk dance

    Created at Sapientia University, Tirgu Mures (Marosvásárhely), Romania. Directed by Kátai Zoltán and Tóth László. In cooperation with "Maros Művészegyüttes", Tirgu Mures (Marosvásárhely), Romania. Choreographer: Füzesi Albert. Video: Lőrinc Lajos, Körmöcki Zoltán. Supported by "Szülőföld Alap", MITIS (NGO) and evoline company. Click the link below to watch this visualization included in the

    Quick-sort with Hungarian (Küküllőmenti legényes) folk dance
  • オーダーについて知っておくべき5つのこと - わさっきhb

    研究室のゼミ発表で,「オーダーのことはよく分かっていませんが…」という前置きで計算量の見積もりをしているものを,昨年,今年と見かけました. この日記が役に立つか,余計な御世話になるか分かっていませんが,ここに整理を試みてみました. 1. ビッグ・オー記法 「アルゴリズムの計算量をオーダーで表してみなさい」と指示されたときのオーダーは, 注文,発注という意味でもなく, 順番*1,順序,秩序という意味でもなく, 「百万のオーダー」*2というような使い方でもなく, 数学の位数という意味でもなく, ビッグ・オー記法,あるいはwikipedia:ランダウの記号を用いて表すものを言います. 2. 一番次数の高いもの以外,それと係数は無視 ビッグ・オー記法では,基的に,一つの文字に関するできるだけ簡単な数式に,「O( )」をかぶせます.このとき, 複数の項の足し算なら,次数の最も高いものだけを残し,他

    オーダーについて知っておくべき5つのこと - わさっきhb
  • ランダウの記号 - Wikipedia

    スターリングの公式はランダウの記号を用いてと書くこともできる。 ランダウの記号(ランダウのきごう、英: Landau symbol)は、主に関数の極限における漸近的な挙動を比較するときに用いられる記法である。 ランダウの漸近記法 (asymptotic notation)、ランダウ記法 (Landau notation) あるいは主要な記号として O (数字の0ではない)を用いることから(バッハマン-ランダウの)O-記法 (Bachmann-Landau O-notation[1])、ランダウのオミクロンなどともいう。 記号 O はドイツ語のOrdnungの頭字にちなむ[2]。 なおここでいうランダウはエトムント・ランダウの事であり、『理論物理学教程』の著者であるレフ・ランダウとは別人である。 ランダウの記号は数学や計算機科学をはじめとした様々な分野で用いられる。 概要[編集] ランダウの

    ランダウの記号 - Wikipedia
  • 1