タグ

algorithmとAlgorithmに関するnatu3kanのブックマーク (70)

  • 様々なrate limitアルゴリズム - Carpe Diem

    概要 インターネットに晒されているWebサービスでは TV等で紹介されたことによる大量流入 悪意ある人物からの攻撃 クライアントのバグに依る大量リクエスト など、来想定していた以上のトラフィックが来ることはよくあります。 単純にシステムを構築すると大規模トラフィックに対応できずシステムがスローダウンしてしまうため、何かしらrate limitをかけておいた方が良いです。 ただしrate limitと一口に入っても色々あるため、今回は主なrate limitアルゴリズムを紹介します。 Leaky bucket Leaky bucketはデータ転送レートを一定にする(=上限を設定する)アルゴリズムです。 下の図のように、様々な流量の水流がそのバケツに流れ込んでも小さな穴からは一定の水流が流れ出す仕組みです。 ref: What is the difference between token

    様々なrate limitアルゴリズム - Carpe Diem
  • 動的計画法を実現する代数〜トロピカル演算でグラフの最短経路を計算する〜 - Qiita

    Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? トロピカル半環と呼ばれる代数構造上のトロピカル行列を利用すると動的計画法を使ってグラフの最短経路の距離を計算するという問題が単純な行列積で解けてしまうらしい。そんな噂12を聞きつけて我々はその謎を解き明かすべく南国(トロピカル)の奥地へと向かった。 トロピカルな世界に行くためにはまずは代数を知る必要がある。要するに群・環・体の話だ。しかしこの記事の目的は代数学入門ではないので詳しい話は他の記事3に譲るとし、さっそく半環という概念を導入する。それは 半環は以下の性質を満たす二つの二項演算、即ち加法(和)"$+$" と乗法(積)"$\cdo

    動的計画法を実現する代数〜トロピカル演算でグラフの最短経路を計算する〜 - Qiita
    natu3kan
    natu3kan 2019/07/11
    >そもそもなんで"トロピカル"幾何学と呼ばれるかというと、どうやらこの分野を研究し始めたのがブラジルの計算機科学者だから7らしい。
  • メルカリ 不正取引ユーザーを機械学習、ネットワーク解析で検出 | Ledge.ai

    ユーザー間の取引がサービスの大きな要であるメルカリ。当然、不正取引は悩みの種だ。 そのメルカリは2019年5月、増田直紀上級講師(英ブリストル大学)、小舘俊(東北大学)と共同で、機械学習と「ネットワーク解析」と呼ばれるデータ解析方法を用いて不正取引を検出する研究成果をネットワーク科学の主要な国際会議である「NetSci 2019」で発表した。 ネットワーク科学とは ユーザとユーザの取引関係はネットワークとして表すことができます。同様に、他の人間関係、経済現象、インターネット、交通網、生態系、遺伝子と遺伝子の関係など、様々な現象やデータはネットワークという共通言語で表すことができます。ネットワーク科学は、「つながりの科学」であり、ネットワークとして表されるデータから有用な情報を引き出したり、社会や科学などにその知見を応用することを目指す研究分野です。 「ネットワーク解析」を用いて不正取引を検

    メルカリ 不正取引ユーザーを機械学習、ネットワーク解析で検出 | Ledge.ai
  • 量子コンピュータの基礎から応用まで/quantum summit 2019

    資料は2019年3月12日〜13日に開催された�Quantum Summitの1日目の講演をもとに、QunaSysがまとめたものです。量子コンピュータの歴史・動作原理から有望なアルゴリズムとその応用先・量子コンピュータ業界の現在までをまとめました。

    量子コンピュータの基礎から応用まで/quantum summit 2019
    natu3kan
    natu3kan 2019/06/03
    難しそうだけど、実際に触ってみたら、生き物みたいな感覚なんだろうか。回路通り抜ける時に量子デコヒーレンスおきちゃうから数が必要と。焼きなましだからイジングモデルと。民間に3Dプリンタ感覚で普及したらなあ
  • 従来の計算能力を大幅に向上させる新技術を開発 東芝 | NHKニュース

    東芝は従来のコンピューターの計算能力を大幅に向上させる新しい技術を開発したと発表しました。「組み合わせ最適化問題」と呼ばれる計算では世界最速を実現したとしています。 最適な解を選ぶ「組み合わせ最適化問題」の計算では、NTTが開発しているレーザーを使ったコンピューターの10倍の速度で計算し、世界最速を実現したとしています。 この計算は新薬開発での分子の設計や効率的な配送ルートの選択などさまざまな分野での活用が期待されていますが、従来のコンピューターでは膨大な時間がかかるため計算には開発が進む「量子コンピューター」が必要だとされていました。東芝は新技術について年内の実用化を目指すとしています。 東芝の研究開発センターの後藤隼人主任研究員は「従来のデジタル計算機をそのまま活用できるのがいちばんの成果であり、社会や産業を効率的にしたい」と話しています。

    従来の計算能力を大幅に向上させる新技術を開発 東芝 | NHKニュース
    natu3kan
    natu3kan 2019/04/20
    こういうアルゴリズムの技術って数学の基礎研究がいきてたりするので基礎研究にお金をかけるのは大切だと思いました。アルゴリズムって書いて記事内で補足いれればいいのにね
  • 軽い気持ちでLinkedListを使ったら休出する羽目になった話 - Qiita

    ざっくり言うと リスト構造のデータに対してランダムアクセスはしちゃだめだぞ。お兄さんとの約束だ! 発端 数年前に他部署の支援で作ったJavaのシステムに、ちょっとデカめのデータを突っ込んだらありえないほど遅いので助けてくれ、と連絡が入った。 まぁクエリとかインデックスをちょっと見れば直るっしょ・・・と鼻をほじりながら支援に向かった。 処理内容 遅い部分の処理は以下のようなものであった。 処理対象のデータをListで受け取る。 それをforループで1件ずつ前処理する。 処理結果をオブジェクトに格納し、ORマッパーでDBにINSERTする。 これだけ? そう、これだけだ。並列処理なんて高級なことはもちろんやってない。 インフラ調査 処理中のサーバのようすを調査する。今回のインフラは典型的な3層3サーバ構成。 WEBサーバはなにもかもが余裕。 APサーバではCPUを1つ使い切っている。 14コア

    軽い気持ちでLinkedListを使ったら休出する羽目になった話 - Qiita
    natu3kan
    natu3kan 2018/02/19
    ベテランには常識な事であっても、こういう失敗学の共有って新しく仕事する人の為になっていいよね。ブコメも参考になる。これ使え出来そうって試して、仕組みを詳しく把握してなくて失敗は他業種でもある
  • Alpha Zeroの衝撃と技術的失業|山本一成🚗TURING

    2016年、Google DeepMind社から恐ろしい論文が出された、AlphaGoその名を冠した囲碁プログラムが既存の囲碁ソフトに勝率99%を叩き出したのだ。AlphaGoは強化学習とDeep Learningを組み合わせた囲碁プログラムで、その年に最強の囲碁棋士の一人である李世ドルさんに4勝1負で勝利した。その後も進歩を続けて今のAlphaGoの強さは人類が体感できるレベルを超えるほど強くなったと予想される。 2017年も終わりのころ、Google DeepMind社からまた途方もない論文が発表された。囲碁とほぼ同じ手法で最強レベルのチェスや将棋プログラムを超えたということだった。実際のところ正確に超えたのかどうかちょっとだけ疑問もあるのだが、まず前提として彼らの新手法が途方もない成果をあげたこと素直に祝福したい。彼らは自分たちのプログラムをAlpha Zeroと名付けた。 コンピュ

    Alpha Zeroの衝撃と技術的失業|山本一成🚗TURING
    natu3kan
    natu3kan 2018/01/23
    汎用性があるとわかって優れた研究者と大量の資本が集まれば、一気に技術の発達が進むよな。世の中の多くの難病が難病のままなのは難病になる人が少なく需要が少なくて予算が下りないから研究が進まない側面もあるし
  • タワマンのゴミ捨て場にはお金になるものがたくさんある

    タワマンに住んでる。 各フロアに24時間出せるゴミ捨て場があって、そこにはご近所さんが捨てた「まだ使えるもの」がけっこうある。 自分の過ちに気づけた。増田に書いてよかった。

    タワマンのゴミ捨て場にはお金になるものがたくさんある
    natu3kan
    natu3kan 2018/01/04
    規約や条例によっては捨てられた時点でマンションの管理組合の所有物とか回収後は自治体の所有物になったりするから、それを取ると窃盗になるし、不法投棄や窃盗の防止のためにごみ捨て場に監視カメラついてる所も
  • Bing検索の裏側―BitFunnelのアルゴリズム - Hatena Developer Blog

    はてなアプリケーションエンジニアの id:takuya-a です。 この記事では、Microsoft の検索エンジン Bing で採用された BitFunnel アルゴリズムを紹介します。 昨年のエンジニアアドベントカレンダーでは、文字列検索のアルゴリズム全般について紹介しました(文字列アルゴリズムの学びかた - Hatena Developer Blog)。今年はそのなかでも、インデックス(索引)を使った全文検索アルゴリズムについてのお話になります。 この記事の前半は全文検索の入門にもなっていますので、検索技術になじみがない方にも楽しんでいただけるのではないでしょうか。 逆に、「そんなのもう知ってるよ!」という方は、題である「BitFunnel アルゴリズムの詳細」から目を通していただければと思います。 この記事は、はてなエンジニア Advent Calendar 2017の21日目の

    Bing検索の裏側―BitFunnelのアルゴリズム - Hatena Developer Blog
  • エレベータに見るアルゴリズムの性能と公平性のバランス|Rui Ueyama

    現実世界でもコンピュータの中でも、何らかの性能指標だけを追求すると参加者にとって極端に不公平になってしまうことがある。例えばエレベータとHDDは共通点がありそうに思えないが、この2つは性能特性的にとてもよく似ていて、リーズナブルな性能と公平性を両立させるために同じ制御方法が使われている。これについてちょっと説明してみよう。 1基しかない場合のエレベータの動き方は単純だ。一度上に動き出すと、上で待ってる人や降りる人がいる限り上昇し続ける。同じように、一度下に動き出すと、下で待っている人や降りる人がいる限り下降し続ける。これ以外の動き方をするエレベータはまず存在しないので、これが唯一の制御方法のように思えるけど、別にこうしなければいけないというルールはない。 エレベータの平均待ち時間を最適化することを考えてみよう。そうすると、一方向に動き続ける代わりに、エレベータが現在存在する階に一番近い人の

    エレベータに見るアルゴリズムの性能と公平性のバランス|Rui Ueyama
    natu3kan
    natu3kan 2017/11/24
    エレベータとHDD
  • SQLトランザクション分離 実践ガイド | POSTD

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

    SQLトランザクション分離 実践ガイド | POSTD
  • 東大ら、1枚の紙を折ってあらゆる立体形状にする折り紙アルゴリズムを開発 - BIGLOBEニュース

    東大ら、1枚の紙を折ってあらゆる立体形状にする折り紙アルゴリズムを開発 マイナビニュース 6月27日(火)16時9分 写真を拡大 東京大学は、同大学総合文化研究科広域科学専攻の舘知宏助教とマサチューセッツ工科大学のエリック・ドメイン教授が、一枚の紙を折るだけで任意の多面体形状を得るアルゴリズムを開発したことを発表した。この成果は、7月4日〜7日にオーストラリア・ブリスベンで開催される「33rd International Symposium on Computational Geometry (SoCG 2017)」で発表される。 一枚の紙を折ってさまざまな形状に加工する「折り紙」が、機能を持った立体構造やマイクロスケールの形状の作成方法として着目されている。 舘助教が10年前に公開したフリーソフトウェア「オリガマイザ(Origamizer)」は、一枚の紙から切り込み無しで複雑な多面体形状

    東大ら、1枚の紙を折ってあらゆる立体形状にする折り紙アルゴリズムを開発 - BIGLOBEニュース
  • Amazonの推薦システムの20年

    IEEE Internet Computingの2017年5・6月号に "Two Decades of Recommender Systems at Amazon.com" という記事が掲載された。 2003年に同誌に掲載されたレポート "Amazon.com Recommendations: Item-to-Item Collaborative Filtering" が Test of Time、つまり『時代が証明したで賞』を受賞したことをうけての特別記事らしい 1。 「この商品を買った人はこんな商品も買っています」という推薦で有名なAmazonが1998年にその土台となるアルゴリズムの特許を出願してから20年、彼らが 推薦アルゴリズムをどのような視点で改良してきたのか 今、どのような未来を想像するのか その一端を知ることができる記事だった。 アイテムベース協調フィルタリング 20年前も

    Amazonの推薦システムの20年
  • 劣モジュラ最大化によるエントリの推薦をやってみた - yasuhisa's blog

    背景 半年前から機械学習に関するよさそうなエントリを提示してくれるbot(ML君)を運用しています。 大量のtweetの中から関連するエントリを人手で探す手間は省けるようになったのですが、最近別の問題が起こっています。以下の画像はある日に提示されたエントリの結果ですが、arxivの論文(しかもほぼ深層学習関連のもの)ばかりになっています…。ML君はURLが与えられたときに、それが機械学習に関連するいいエントリかどうかを判定しますが、提示したエントリの話題が重複しているなど条件は全く考慮していないので、当然と言えば当然の結果です。ML君を責めてはいけない。 上のような推薦結果は私が深層学習研究者/エンジニアなら喜ぶかもしれませんが、残念ながらそうではありません。機械学習/自然言語処理に関連する企業のニュース/githubのライブラリなど、色々なトピックについてカバーして欲しいものです。問題設

    劣モジュラ最大化によるエントリの推薦をやってみた - yasuhisa's blog
  • 私たちはいかにして環状線で”悪さをする列車”を捕まえたか | プログラミング | POSTD

    文:Daniel Sim 分析:Lee Shangqian、Daniel Sim、Clarence Ng ここ数ヶ月、シンガポールのMRT環状線では列車が何度も止まるものの、その原因が分からないため、通勤客の大きな混乱や心配の種となっていました。 私も多くの同僚と同じように環状線を使ってワンノースのオフィスに通っています。そのため、11月5日に列車が止まる原因を調査する依頼がチームに来た時は、ためらうことなく業務に携わることを志願しました。 鉄道運営会社SMRTと陸上交通庁(LTA)による事前調査から、いくつかの電車の信号を消失させる信号の干渉があり、それがインシデントを引き起こすことが既に分かっていました。信号が消失すると列車の安全機能である緊急ブレーキが作動するため、不規則に電車が止まる原因となります。 しかし8月に初めて発生した今回のインシデントは、不規則に起こっているように見えるた

    私たちはいかにして環状線で”悪さをする列車”を捕まえたか | プログラミング | POSTD
  • プログラミング言語によるルービックキューブ (3x3x3) ソルバ実装まとめ

    2015-10-07 ルービックキューブ Tech ルービックキューブ プログラミング言語によるルービックキューブ (3x3x3) ソルバ実装まとめ はコメントを受け付けていません。 記事では、ルービックキューブ 3x3x3 のソルバ (解法プログラム) の実装をまとめます。同時にスクランブルジェネレータ (スクランブル生成プログラム) も紹介します。 ソルバとスクランブルジェネレータの関係 紹介の前に、ソルバとスクランブルジェネレータの関係を簡単に述べておきます。 パズルのスクランブルジェネレータはソルバに強く依存しています。 というのも、ソルバが存在すればランダムステートなパズルの状態から完成状態に至る手順Sを求めることが可能となり、Sの逆手順S’が完成状態からそのランダムステートへのスクランブルシーケンスとなるためです。逆手順を求めるのは一般に容易 (自明) であるため、ソルバが確

    プログラミング言語によるルービックキューブ (3x3x3) ソルバ実装まとめ
  • H.264の秘密 | POSTD

    (編注:2020/08/18、いただいたフィードバックをもとに記事を修正いたしました。) (2016/12/11、いただきましたフィードバックをもとに翻訳を修正いたしました。) H.264は、動画圧縮コーデックの標準規格です。ネット上の動画、Blu-ray、スマホ、セキュリティカメラ、ドローンなどなど、今やあらゆるところでH.264が使われています。 H.264は注目すべき技術のひとつです。たったひとつの目標、つまりフルモーションビデオの送信に要するネットワーク帯域を削減することを目指した30年以上の努力の結晶なのです。 技術的な面でも、H.264はとても興味深い規格です。この記事では、その一部について概要レベルでの知識を得られることでしょう。あまり複雑だと感じさせないようにするつもりです。今回おはなしする概念の多くは動画圧縮全般にあてはまるものであり、H.264に限ったものではありません

    H.264の秘密 | POSTD
  • 高速なハッシュテーブルを設計する | POSTD

    (訳注:2016/9/28、頂きましたフィードバックを元に記事を修正いたしました。) はじめに 稿では、高速で汎用的なハッシュテーブルを作るために行う、設計についての多くの意思決定事項を紹介します。最終的に、私の emilib::HashSet とC++11の std::unordered_set の間のベンチマークが出来上がりました。もし、ハッシュテーブルに興味があって、自分で設計したいなら(どのプログラミング言語かに関わらず)、稿がヒントになるかもしれません。 ハッシュテーブル は、素晴らしい発明です。 ならし計算量O(1) ( O(√N)時間 )で、挿入、削除、検索を行うことができます。ならし計算量とは、ハッシュテーブルの計算に平均でO(1)の計算量がかかることを意味しますが、時々、これよりも多くの時間がかかる場合があります。具体的には、ハッシュテーブルに空きがない場合で、挿入の

    高速なハッシュテーブルを設計する | POSTD
  • 機械学習のためのPython入門 クラスとメソッド編 - Beginning AI

    機械学習にどのようなPythonの知識が必要かは、Python機械学習プログラミングの監訳者福島 真太朗(ふくしま しんたろう)さんが以下のように述べられています。 Pythonの文法については、リスト、タプル、ディクショナリなどの基的なデータ構造、forループ、print関数、zip関数、enumerate関数、関数やクラスの作成方法などが理解できていれば十分です。 thinkit.co.jp そこで今回はPythonで書かれた機械学習のコードを読めるように、リスト、タプル、ディクショナリなどの基的なデータ構造、forループ、print関数、zip関数、enumerate関数、関数やクラスの作成方法について学んでいきます。 従ってこの記事は、Pythonを一度もやったことがなく、機械学習のためにPythonを学びたいという人向けです。 今回読み解くPythonコードについて 今回は題

  • Linuxカーネルのコードを読んで勉強になったこと - φ(・・*)ゞ ウーン カーネルとか弄ったりのメモ

    Linuxカーネルのコードを読んでて、なるほど〜と思うことはよくあるけど、その中でも特に今までの考え方をぶち壊してくれたのはなんだっけと思ったところ、やっぱりリスト構造かなと言うところ。 c言語でリスト構造を作る場合、一般的な教科書方式だと↓のようにデータとnextポインタは密結合になってると思います。これの場合、struct foobarのポインタをnext要素に使っているので、他の構造体(例えば、struct hogehoge)で同じことをしようとすると、その構造体ではstruct hogehoge *nextというメンバ変数を持つ必要があります。 ヘッド要素はstruct foobarです。 struct foobar { int n; char s[64]; struct foobar *next; }; struct foobar head; Linuxカーネルの場合、データとリ

    Linuxカーネルのコードを読んで勉強になったこと - φ(・・*)ゞ ウーン カーネルとか弄ったりのメモ
    natu3kan
    natu3kan 2016/06/07
    >でも、データとリストを別に管理するという方法は良いですよね。