タグ

Algorithmに関するscrewboundのブックマーク (253)

  • オンラインゲーム 10年の進化と同期方式の選び方 - きゅぶろぐ

    オンラインゲームを作ろう!と思ったことがある方は、 こちらの講演記事を1度は見たことがあるのではないでしょうか。 www.4gamer.net こちらの講演は、具体例を交えながら非常に分かりやすくオンラインゲームの主な同期方式が説明してあり、 2024年現在でもオンラインゲームの基礎を学ぶ資料として真っ先に名前を上げる最高の資料です。 しかしながら講演は2010年のものであり、オンラインゲームはこの10年余りで進化しています。 この辺りの進化の話を簡単にまとめつつ、オンラインゲームの同期方式の選び方を紹介します。 (上記講演記事の知識/用語を前提としているため、先に上記記事をお読みください。) オンラインゲームの民主化について 技術の話をする前に。 近年、「マルチプレイヤーゲーム」と聞いてオフラインの画面分割ゲームを想像する人はいないと言って良いほど オンラインゲームは民主化されてきました

    オンラインゲーム 10年の進化と同期方式の選び方 - きゅぶろぐ
  • バイオームのプロシージャル生成 - パーリンノイズアルゴリズム - Qiita

    🌏母なる大地を創造する🌏 今回はパーリンノイズ法を用いたバイオーム生成について簡単に解説します。 🌏パーリンノイズとは🌏 **"パーリンノイズ"は地形生成に適した"ノイズアルゴリズム"です。 あの超有名なゲームである"マインクラフト"**でも使われています。 また、マインクラフトのワールドでは バイオームを生成 しており 様々な生物群系 を取り入れています。 ゲームで使用されるパーリンノイズの例 🌏前回紹介した生成の応用🌏 [DTL]地形生成(パーリンノイズ法)🌏 で紹介したパーリンノイズ法による地形自動生成を用いてバイオームを作っていきます。 🌏バイオームを作るために必要なモノ🌏 バイオーム生成には "年平均気温"と"年降水量"に近似した2つの変数が必要です。 実世界のバイオームの大まかな区分はこんな感じ。 🌏バイオーム変数を定義🌏 using shape_t =

    バイオームのプロシージャル生成 - パーリンノイズアルゴリズム - Qiita
  • HTTP/3のヘッダ圧縮仕様QPACKについて - ASnoKaze blog

    この記事では、HTTP/3で導入されるHTTPヘッダ圧縮の仕組みである「QPACK 」について説明します。(執筆時 draft 07) 2020/06/01追記 まるっと解説記事を書き直しました asnokaze.hatenablog.com HTTP/2の場合 ハフマン符号 静的テーブル、動的テーブル HTTP/3とQPACKの導入背景 QPACKの概要 Encoder Instructions Decoder Instructions Header Block Instructions 相対インデックス Compressed Headers エラーハンドリング その他 QPACKという名称について HTTP/2の場合 簡単に、HTTP/2で導入されたヘッダ圧縮の仕組みである「RFC7541 HPACK」について補足します。飛ばしていただいても大丈夫です。 HTTP/2の元となったSPD

    HTTP/3のヘッダ圧縮仕様QPACKについて - ASnoKaze blog
  • ざっくりわかった気になるモダンGC入門 - Cybozu Inside Out | サイボウズエンジニアのブログ

    どうも!@yokotaso です! 2018/05/26のJJUG CCC 2018で「ざっくりわかった気になるモダンGC入門」というタイトルで登壇させていただきました。 現在開発中の新しいGCアルゴリズムをざっくり理解することをテーマに発表しました。 発表練習用に作ったカンペの内容を公開します。ブックマークコメントでもツイートでも感想を書いていただけると喜びます! 発表資料は、speakerdeck にあります。はじまり〜はじまり〜 はじめに 今日はざっくりわかった気になるモダンGC入門というお話をさせていただきます。 現在開発中のGCアルゴリズムの全体像を理解してもらうことを目的としたセッションです。よろしくおねがいします。 さて今日のアジェンダですが、まず簡単にこれまでのGCを復習した後に新しいGCが必要になってきた背景について少し話します。 次にShenandoahGC、ZGC、E

    ざっくりわかった気になるモダンGC入門 - Cybozu Inside Out | サイボウズエンジニアのブログ
  • "ニュースメディアにおける広告技術" LINE Developer Meetupでの発表 - SmartNews Engineering Blog

    スマートニュース株式会社の西尾と申します。広告開発チームのエンジニアリングマネージャをやっています。もう一月前になってしまいましたが、2018年6月20日に、LINE株式会社で行われたMeetup in Tokyo #37 ニュースメディアにおける広告技術 に登壇しました。 自分は大学時代に物理学を専攻していましたが、物理学はソフトウェアエンジニアリングと直接結びつくわけではありません。しかし物理学がスマートニュースの問題解決に役立った事例があり、とても面白かったので、今回ぜひ紹介したいと思います。スライドには数式が多いので、自分には関係ないと思われる方も多いかもしれません。そんな方には、ぜひ最後の「発表にこめた思い」を読んで欲しいです。 現在自分は特に広告配信アルゴリズムの開発・実装という側面でチームをリードしています。 広告配信のアルゴリズムは大抵は秘密にしておきたいものですが「AI

    "ニュースメディアにおける広告技術" LINE Developer Meetupでの発表 - SmartNews Engineering Blog
  • Linuxのloadavgが約7時間ごとに上昇する現象の原因 - Mackerel ブログ #mackerelio

    Mackerelチームのエンジニアのid:itchynyです。 「mackerel-agentを入れるとloadavgが7時間ごとに上昇する」 先日、このような問い合わせを複数のお客さまから受けました。私も実験してみたところ、確かに再現しました。EC2 t2.microにmackerel-agentを入れて簡単なログ監視とプロセス監視を設定し、数日放置しました。 確かに、約7時間ごとにloadavgが上昇しています。この周期のcronの設定はしておらず、またmackerel-agent内部でも7時間ごとに行う処理はありません。しかし、プラグインを多く入れるほどloadavgのピーク値も上がります。 エントリーでは、この現象の原因について説明します。 loadavgが上昇する原因を調べるには、まずloadavg自体がどう計算されているかを知る必要があります。 まずは、Linuxがloada

    Linuxのloadavgが約7時間ごとに上昇する現象の原因 - Mackerel ブログ #mackerelio
  • ruby 0.62 のソースコードを復活させた - まめめも

    RubyKaigi の後夜祭で、akr さんが「327 種類の Ruby をビルドする方法 〜0.49 から 2.6.0-preview2 まで〜」という発表をされていました。 RubyKaigi 2018 After Party で話したスライドです: 「327 種類の Ruby をビルドする方法 ~0.49 から 2.6.0-preview2 まで ~」https://t.co/J5MXgM2PNN— Tanaka Akira (@tanaka_akr) 2018年6月4日 その中で、ruby-0.62.tar.gz と ruby-0.63.tar.gz のファイルは「gzip 形式じゃないといわれて展開できない」ということで、ビルド対象から外されていました。 いろいろやって、めでたくこの 2 ファイルを復活させることに成功しました。そのプロセスを書きます。 なお、壊れていたファイルも

    ruby 0.62 のソースコードを復活させた - まめめも
  • EMアルゴリズム徹底解説 - Qiita

    ステップ2 $r_{nk}$を固定して$J$を$\mu_k$で偏微分して最小化します。 式変形をすると、 クラスタ$k$の最適なCentroidは上記のように、クラスター$k$に所属しているデータの平均であることがわかりました。 上記より最初のデモンストレーションで行っていたアルゴリズムは損失関数$J$の最適化によって導出されたものを適用していたことがわかります。 2−3. 実装 上記で示した2ステップを計算して、イテレーションを回すだけのシンプルなプログラムです。最後に更新前のmuと更新後のmuの差を取り、それがある程度小さくなったら収束したと判断し、イテレーションを止めるようにしています。 下記はアルゴリズム部分の抜粋です。プログラムの全文はコチラにあります。 for _iter in range(100): # Step 1 =============================

    EMアルゴリズム徹底解説 - Qiita
  • ハッカソンの審査に数値が使えない理由

    審査はハッカソンの栄誉です。世界には高く評価されているハッカソンがいくつもありますが、そこには共通点があります。そのひとつが、審査がうまくいっていることです。いくつものプロジェクトや審査員が存在するため、ハッカソンの審査はとても難しいのです。それらを解釈してスコアをつける時間を設定されると、当に大変だと感じます。 このことについてJuuso Lappalainenに話を聞きました。彼は、Junctionの審査システムを開発しているチームの一員です。 「審査は非常に難しい問題です。常に主観的な部分が残されているからです。完璧にできているハッカソンは世界に1つもないと思いますよ」 「Junctionでは、審査はすべての参加者のハッカソンの体験を楽しいものにする大きな要因であり、最終的にはハッカソンの質を決めるものだと考えています。だからこそ、最高の審査ができるように、一層の努力を重ねています

    ハッカソンの審査に数値が使えない理由
  • Exponential backoff - Wikipedia

    Exponential backoff is an algorithm that uses feedback to multiplicatively decrease the rate of some process, in order to gradually find an acceptable rate. These algorithms find usage in a wide range of systems and processes, with radio networks and computer networks being particularly notable. An exponential backoff algorithm is a form of closed-loop control system that reduces the rate of a con

  • データ競合(data race)と競合状態(race condition)を混同しない - Qiita

    Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? T/O マルチスレッド・プログラミングの文脈では、「データ競合(data race)」と「競合状態(race condition)」は直交した異なる概念を表す1。両者ともに回避すべき事象だが、問題を取り扱うレイヤは明確に区別されるべき。 データ競合(data race)は、マルチスレッド・プログラム実装上の問題である。 競合状態(race condition)は、並行処理システム設計上の問題である。 ここではJava, C#, C++あたりのマルチスレッド対応手続き型ベースのプログラミング言語を取り上げるが、言語パラダイムによらずマルチ

    データ競合(data race)と競合状態(race condition)を混同しない - Qiita
  • アルゴリズムとは何か!? ~ 文系理系問わず楽しめる精選 6 問 ~ - Qiita

    今の場合は A さんが 31 歳の場合のストーリーでしたが、A さんが 20 歳~ 35 歳のうちのどの年齢であったとしても、似たようなストーリーで必ず 4 回の質問で当てることができます!(他の例も是非考えてみてください。) ちなみに、このような「真ん中で切ってどちらかに絞って行く」タイプのアルゴリズムには二分探索法という名前がついています。応用情報技術者試験でも頻出のテーマですので馴染みのある方も多いと思います。 1-2. つまり、アルゴリズムとは 上の年齢当てゲームという問題では、相手の年齢を当てる「方法・手順」を二分探索法に基づいて導きました。このようにアルゴリズムとは、 問題を解くための方法・手順 のことです。さて、アルゴリズムと聞くと「コンピュータ上で実装されたプログラム」のことを思い浮かべる方も多いと思いますが、必ずしもコンピュータと関係がある必要はなく、日常生活でも多々登場

    アルゴリズムとは何か!? ~ 文系理系問わず楽しめる精選 6 問 ~ - Qiita
  • 競技プロ的なアルゴリズムのスライドのまとめ Wiki - yukicoder

    競技プログラミングの練習サイト

    競技プロ的なアルゴリズムのスライドのまとめ Wiki - yukicoder
  • Re永続データ構造が分からない人のためのスライド

    Competitive Programming Advent Calendar 2012の12/01担当分の記事です。

    Re永続データ構造が分からない人のためのスライド
  • 動画圧縮技術「AV1」仕様リリースでNetflixやYouTubeのより優れたストリーミング実現へ

    GoogleMicrosoftAmazon、Facebook、Cisco、Netflixといったテクノロジ大手企業が加盟する団体が、動画圧縮技術「AV1」の仕様の最初のバージョンを完成させ、それらの企業がAV1を使って、ユーザーのストリーミング動画を高速化する準備が整ったようだ。 Alliance for Open Media(AOMedia)によると、4K UHD動画の配信で、AV1は競合するコーデックと比べて平均30%優れた圧縮率を実現しているという。AOMediaはAV1を開発した団体だ。一部の技術は実験室から外に出るのに苦労するが、AV1はそれには当てはまらず、近いうちにノートPCやスマートフォンでの対応が広がり、AV1でYouTubeや「Amazon Prime」、Netflix、Facebookから動画が配信されるようになるかもしれない。 動画のストリーミングでは、圧縮技術

    動画圧縮技術「AV1」仕様リリースでNetflixやYouTubeのより優れたストリーミング実現へ
  • エレベータに見るアルゴリズムの性能と公平性のバランス|Rui Ueyama

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

    エレベータに見るアルゴリズムの性能と公平性のバランス|Rui Ueyama
  • 乱数生成器とゲームと諜報活動の話|Rui Ueyama

    ゲームなどを作っているとランダムさが必要になることがあるけど、コンピュータは基的に毎回全く同じように動くので、乱数を作り出すのはそう簡単なことではない。Wi-FiやHTTPSなどの暗号は乱数のランダムさに質的に依存しているので、高品質な乱数生成は世の中的にも重要な話題である。ここでは乱数生成について話をしてみよう。 ゲームではイベントがプレイヤーに予測不可能であればよいだけなので、真の乱数列ではなく擬似乱数列というものを使うことが多い。擬似乱数列は人間にはランダムにみえるけど、実際は何らかの数式によって順番に生成されているだけの数の列で、初期値を毎回違うものにしておくと、人間には毎回違う数列が生成されるようにみえる。初期値には現在時刻を使うことが多い。現在時刻は普通の用途では毎回違うからだ。 昔のゲーム機は現在時刻の設定がなかったので、ファミコンなどでは、起動してからの経過時間を疑似乱

    乱数生成器とゲームと諜報活動の話|Rui Ueyama
  • ゲーム制作に革命か?NASA画像から深層学習で背景を自動生成

    ビデオゲームで使われる風景画像をNASAのデータをもとに機械学習で自動生成する方法が研究されている。実用化されれば、ゲーム制作の流れが変わりそうだ。 by Emerging Technology from the arXiv2017.07.28 191 91 3 0 ビデオゲームの風景や人工的な世界を創り出す方法は2種類ある。1つは、地形を手作業で作り、岩、草、木、雪などを適切な色や質感で装飾する方法だ。この方法は高品質だが、人件費が高くつく。 もう1つは、アルゴリズムで景色を生成する方法で、早くて安価だ。この方法を駆使したゲーム「マインクラフト」は、プレイするたびに新しい景色を見ることになる。 こうした風景を生成しているアルゴリズムの開発は成熟しており、プログラマーは何年にもわたって微調整を続け、異なる気候、質感、高度などを作り出してきた。しかし、風景を生成する新しいアルゴリズム自体を書

    ゲーム制作に革命か?NASA画像から深層学習で背景を自動生成
  • ビームサーチの基礎知識と機械学習への3つの活用事例

    深さ優先探索と幅優先探索 深さ優先探索 幅優先探索 ビームサーチ 機械学習への応用 Google Alloの返答 学習時にビームサーチの幅を持たせて学習 3D形状の学習への応用 まとめ 参考文献 ビームサーチ(Beam Search)は、探索アルゴリズムの一種でメモリをそれほど必要としない最良優先探索です。 機械学習の分野でも、翻訳やチャットボットの返答などに応用されています。記事では、ビームサーチのアルゴリズムを理解してどのように応用されているのかを解説します。 機械学習を活用したシステムを構築する際にも、探索空間が広い場合などには応用可能なので、使いこなせるようにしておくと役に立ちます。 深さ優先探索と幅優先探索 いきなりビームサーチの解説に入る前に、理解しやすいようにグラフ探索アルゴリズムを紹介します。 深さ優先探索 深さ優先探索は、その名の通り可能な限り突き進んで、行けなくなった

    ビームサーチの基礎知識と機械学習への3つの活用事例
  • Why every gopher should be a data scientist

    Why every gopher should be a data scientist. Ivan Danyliuk, Golang BCN June Meetup 27 June 2017, Barcelona The recent study from MIT has found... ...there's an 87% chance Linus Torvalds hates your code. "Bad programmers worry about the code. Good programmers worry about data structures and their relationships." "Show me your [code] and conceal your [data structures], and I shall continue to be mys