インターネットのセキュリティを向上させるため、Cloudflareがリスボンオフィスに乱数生成のための「波マシン」を設置したことを明らかにしました。 Chaos inCloudflare’s Lisbon office: securing the Internet with wave motion https://blog.cloudflare.com/chaos-in-cloudflare-lisbon-office-securing-the-internet-with-wave-motion/ Chaos Using Waves atCloudflare’s Lisbon Office - YouTube データの盗聴を防ぎつつ正しい相手に届けるには、通信に使用する暗号の「鍵」を生成する際のランダム性が大切です。しかし、コンピュータープログラムは「同じ入力であれば同じ出力をする」と

ヤフー株式会社は、2023年10月1日にLINEヤフー株式会社になりました。LINEヤフー株式会社の新しいブログはこちらです。LINEヤフーTechBlogYahoo! JAPANアプリのトップページの上部には、編集者によってピックアップされた「トピックス」と呼ばれるトップニュースが6本並んでいます。編集者が選定した質の高い記事を提供していますが、必ずしも各ユーザーの興味に適した記事が表示されているとは限りません。そのため、スクロールすると、記事推薦システムによって各ユーザーの好みを考慮した記事が自動で表示される仕組みになっています。 ニュース記事の推薦で特に重要なのは「即時性」です。ニュース記事では、情報が更新されると古い記事は役に立ちません。そのため、入稿された記事がいち早く推薦対象になることが重要になります。 たとえば、事前にユーザーごとの推薦記事一覧(レコメンドリスト)を作成

","naka5":"<!-- BFF501PC記事下(中⑤企画)パーツ=1541 --><!--株価検索 中⑤企画-->","naka6":"<!-- BFF486PC記事下(中⑥デジ編)パーツ=8826 --><!-- /news/esi/ichikiji/c6/default.htm -->","naka6Sp":"<!-- BFF3053 SP記事下(中⑥デジ編)パーツ=8826 -->","adcreative72":"<!-- BFF920 広告枠)ADCREATIVE-72 こんな特集も -->\n<!-- Ad BGN -->\n<!-- dfptag PC誘導枠5行 ★ここから -->\n<div class=\"p_infeed_list_wrapper\" id=\"p_infeed_list1\">\n <div class=\"p_infeed_list\">

はじめに このドキュメントは,主に競技プログラミングで出題される問題を解く際に利用できるアルゴリズムやデータ構造をまとめたものです.特定の問題にはあまりフォーカスしないため,問題を解く際の考察の仕方等の内容はありません.詳しく,正確に,分かりやすく書いていこうと思っています. このドキュメントは執筆途中です. 想定する読者C++を用いたプログラミングに慣れている方を読者として想定しており,C++言語の仕様や,文法にはあまり触れません.また,計算量という用語についても説明しません.ただし,償却計算量など,計算量の見積もりが複雑なものについては必要に応じて説明します. コードについて このドキュメントで登場するコードは,可読性向上のため,以下のようなコードがファイルの先頭に記述してあることを前提としています.また,適切な問題を用いてコードの検証がなされている場合は,コード周辺にのように,検証
はじめに 最近,「一般化ぷよぷよのより強い計算困難性」なる研究を発表しました(東北大学の江藤宏先生,九州大学の木谷裕紀先生との共同研究.国内研究会であるゲームプログラミングワークショップで江藤先生による口頭発表.2021年12月30日現在,pdfはここから取れます). これは有名なビデオゲーム「ぷよぷよ」を一人用のパズルと見立てたとき,かつそれを一般化した場合,どの程度難しいものであるのかを(最適化)アルゴリズム論的に分析したものです.今回「最適化技術の応用・実践」に関する記事を集めよう,ということになりましたので,ちょうどよい題材ということで,この研究をより一般向けに解説してみようと思います.一般向けですので証明自体には踏み込まず,既存の定理と得られた定理の意義をおよそわかっていただくことをこの記事の目標とします.ただし「ぷよぷよ」について関してはおよそルール等がわかっている方を対象とし
こんにちは、square1001 です。 現在は東京大学の学部 1 年生をしています。私は中学 1 年の頃からプログラミングをやっていて、特にアルゴリズムが大好きです。AtCoder をはじめとする競技プログラミング にも取り組んでいて、中高生のときは 情報オリンピック にも参加していました。本記事では、アルゴリズムや競技プログラミングに興味がある方、あるいはプログラミングをやっているけどアルゴリズムをよく知らない方に アルゴリズムはどんなもので アルゴリズムを使うとどんな問題が解けて アルゴリズムが地球のように広く、多様で、奥深く、そして楽しいこと を知ってもらおうと思っています。 アルゴリズムの世界へようこそ 時代は 2020 年代に突入し、急速にIT 化 やDX が進んでいく中で、問題を効率的に解くアルゴリズム技術の重要性が、ますます高まっています。そして、アルゴリズムは、世

はじめに本書は,筆者が長年書き溜めた様々な実務的な最適化問題についてまとめたものである.本書は,Jupyter Laboで記述されたものを自動的に変換したものであり,以下のサポートページで公開している. コードも一部公開しているが,ソースコードを保管したGithub 自体はプライベートである.本を購入した人は,サポートページで公開していないプログラムを 圧縮ファイル でダウンロードすることができる. ダウンロードしたファイルの解凍パスワードは<本に記述>である. 作者のページ My HP本書のサポートページ Support Page 出版社のページPythonによる実務で役立つ最適化問題100+ (1) ―グラフ理論と組合せ最適化への招待―Pythonによる実務で役立つ最適化問題100+ (2) ―割当・施設配置・在庫最適化・巡回セールスマン―Pythonによる実務で役立つ
計算量についてのお話です。対象は、プログラミング経験はあるが計算量のことを知らない初心者から、計算量のことを知っているつもりになっている中級者くらいです。 数式を見たくない人にとっては読むのが大変かもですが、深呼吸しつつ落ちついて読んでくれるとうれしいです。 それから、この記事が自分には合わないな〜と思ったときは、(別の記事を Qiita とかで検索するよりも)この記事の一番下の 参考文献 にある本を読むことをおすすめします。Amazon の試し読みで無料で読めます*1。 TL; DR 関数の増加度合いのことをオーダーと呼ぶよ 計算量は、入力サイズ(など)を受け取ってアルゴリズムの計算回数(など)を返す関数だよ その関数のオーダーについての議論がよく行われるよ オーダーを上から抑えるときは \(O\)、下から抑えるときは \(\Omega\) を使うよ オーダーを上下両方から抑えたいときは

キャッシュレス決済の筆頭としてPayPayやLINE PayといったQRコード決済が日本においても普及し始めていますが、QRコードがどのように生成されているのかを知る機会は多くありません。「Creating a QR Code step by step」は、好きな文字列を表すQRコードを簡単に生成でき、さらにQRコードの生成過程まで理解できるウェブアプリです。Creating a QR Code step by step https://www.nayuki.io/page/creating-a-qr-code-step-by-step まずは「Creating a QR Code step by step」にアクセス。ひとまずオプションの理解は置いておいて「Text string」に「GIGAZINE」と入力し、「Force minimum version」を「2」に設定して「Gene

春の入門祭りの8日目です。 文字列の新旧の違いを表現する時によくdiffをとるとか言いますよね。そこで実行されるのが差分アルゴリズムです。差分のアルゴリズムって結構知れば知るほど難しいやつです。「より良い差分」という基準が、状況によって変わるからです。ヒューリスティックなやつです。例えば、HTMLの説明の文章を書いていたとします。タイトルをテーブルに書き換えてみたとします。 どちらも間違ってはおらず、この差分を元にパッチを当てたりも可能です。ただ、読んだ時の読みやすさが違います。 これはもちろん前者と答える人の方が多いでしょう。だって、タグという意味の塊が維持されていますからね。 これは究極的にはわかりやすいdiffというのは「意味」を理解しないと作れないということを意味します。これがdiffは簡単なようで難しいと書いた理由です。もちろん、ほどほどの工数で、ほどほどの見た目のdiffも作成

波動関数とは「物体の状態そのもの」が波動で表されるという関数であり、時にはゲーム内の物理シミュレーションなどに利用されることもあります。そんな波動関数がある1つの固有の状態に収縮することを波動関数の崩壊と呼び、そんな波動関数の崩壊を用いた「無限に都市が生成されるアルゴリズム」を作り出す猛者が登場。実際にどのような都市生成ツールになっているのか、実際にダウンロードして試してみました。 Wave Function Collapse by marian42 https://marian42.itch.io/wfcGitHub - mxgmn/WaveFunctionCollapse: Bitmap & tilemap generation from a single example with the help of ideas from quantum mechanics. https://g

NTT データ数理システムでリサーチャーをしている大槻 (通称、けんちょん) です。 今回はソートについて記します。 0. はじめに データ構造とアルゴリズムを学ぶと一番最初に「線形探索」や「ソート」が出て来ます。これらのテーマは応用情報技術者試験などでも頻出のテーマであり、アルゴリズムの Hello World とも呼ぶべきものです。 特にソートは、 計算量の改善 ($O(n^2)$ から $O(n\log{n})$ へ) 分割統治法 ヒープ、バケットなどのデータ構造 乱択アルゴリズムの思想 といった様々なアルゴリズム技法を学ぶことができるため、大学の授業でも、アルゴリズム関連の入門書籍でも、何種類ものソートアルゴリズムが詳細に解説される傾向にあります。本記事でも、様々なソートアルゴリズムを一通り解説してみました。 しかしながら様々な種類のソートを勉強するのもよいが、「ソートの使い方」や

既報の通り、阿久津主税八段が勝利を収め、プロ棋士側が3勝2敗で勝ち越した「将棋電王戦FINAL」。4月11日に行われた最終局では、AWAKE側がわずか21手で投了を宣言し物議をかもしましたが、対局後の記者会見でもやはり、AWAKEの「21手投了」という決断に質問が集中しました。 対局後に行われた記者会見 AWAKEは以前、「電王『AWAKE』に勝てたら100万円!」という企画でアマチュアと対戦した際、「自陣にあえて隙を作ることで、AWAKE側に持ち駒の角を打たせて捕獲してしまうことができる」という、ある種の「ハメ手」が見つかっていました。今回、阿久津八段もこの指し方を採用し、AWAKEの角を自陣へ誘導することに成功。この直後、AWAKE開発者・巨瀬亮一さんが投了を宣言し、AWAKE側の負けが決まりました。このまま続行してもAWAKE側にとって相当に不利な状態だったことは確かですが、それでも

[CEDEC 2014]ナムコ作品で見る乱数の歴史。「ゲーム世界を動かすサイコロの正体 〜 往年のナムコタイトルから学ぶ乱数の進化と応用」レポート ライター:箭本進一 神奈川のパシフィコ横浜で行われた,ゲーム開発者向けイベントCEDEC 2014の最終日である2014年9月4日,「ゲーム世界を動かすサイコロの正体 〜 往年のナムコタイトルから学ぶ乱数の進化と応用」という講演が行われた。 登壇したバンダイナムコスタジオ HE技術部 加来量一氏 この講演のユニークな点は,旧ナムコの作品を「乱数」という視点から振り返るということだ。バンダイナムコスタジオ HE技術部のプログラマーである加来量一氏は,旧ナムコの初期作品50本を解析し,それぞれの時代でどのような乱数が使われていたかを特定した。そこから見えてくる乱数技術改良の歴史を見ていくというのが,講義の主旨なのである。 1980年代のナムコアーケ
![[CEDEC 2014]「ゲーム世界を動かすサイコロの正体 〜 往年のナムコタイトルから学ぶ乱数の進化と応用」 - 4Gamer.net](/image.pl?url=https%3a%2f%2fcdn-ak-scissors.b.st-hatena.com%2fimage%2fsquare%2f10648ed5c0d1a42db95e0d3f4eae3942f992f59b%2fheight%3d288%3bversion%3d1%3bwidth%3d512%2fhttps%253A%252F%252Fwww.4gamer.net%252Fgames%252F042%252FG004287%252F20140905040%252FTN%252F001.jpg&f=jpg&w=240)
アルゴリズムを理解するのにビジュアル化することは非常に有効で、プログラムをビジュアル化することで理解が進むのもまた同じ。そこで、アルゴリズム・プログラミングの理解が進むようにと、アルゴリズムを記述したプログラムコードを一挙にビジュアル化することで、アルゴリズム&プログラミングを同時に学習できる一挙両得なサービス「VisuAlgo」が公開されています。 VisuAlgo - visualising data structures and algorithms throughanimation https://visualgo.net/en 上記のVisuAlgoサイトで試しにソートアルゴリズムの基本プログラム「バブルソート」をビジュアル化してみます。「Sorting」の「bubble」をクリック。 検索窓の下に「bubble」と表示されたのを確認したら「Sorting」の画像をクリック。

日本を含む多くの国では三審制が採られており、下級審の判断の是非は終局的には最高裁判所が決定する権限を持っています。このため最高裁の判断には訴訟当事者のみならず多くの関係者の注目が集まるものなのですが、最高裁が下級審の判断を支持するのか覆すのかを高確率で予測できるアルゴリズムの開発が進んでいます。 The Next Evolution of SCOTUS Predictions: Predicting 7,000 Cases Over 60 Years with 71% Accuracy | JoshBlackman'sBlog http://joshblackman.com/blog/2014/07/29/the-next-evolution-of-scotus-predictions-predicting-7000-cases-over-60-years-with-71-accura

「ビットコイン(Bitcoin)」はデータ交換の仕組みであり、決済や蓄財など貨幣であるかのように使われています。このため、IT(情報技術)、ビジネス、経済、社会といった様々な面から論じる必要があります。『ビットコイン・ホットトピックス』欄には、多様な論点の記事を掲載していきます。今回は京都大学の安岡孝一准教授に、計算量理論の立場から寄稿していただきました。(日経コンピュータ編集部) 「Mt.GOX」の破綻(関連記事)によって一躍有名になった感のあるBitcoin(ビットコイン)だが、この期に及んでも、いまだBitcoinを信奉している人々がいて、正直なところ理解に苦しむ。遠慮会釈なく言わせてもらえば、Bitcoinはデジタルマネーとしての設計が極めて悪質で、計算量理論から見て無限連鎖講となっている。別の言い方をすれば、ネズミ講である。 Bitcoinの設計上、新規に発行された通貨を誰が受け

魔方陣の解の列挙は並列化しやすそうな問題ですが、ここでの方針では、探索効率を上げるためには条件分岐が不可欠なので、(「数」を求めるだけだとしても)GPGPUでうまくやる方法がわかりません。そこで、CPUに載っているコアのみで並列化します(Xeon Phiなら簡単なのでしょうか→追記参照)。 一番外側の、0から(1<<25)-1まで変化する変数iのループをOpenMPで並列化します(schedule(guided)では遅くなります。schedule(auto)はVisualC++でサポートされたら試します)。変数iは上の図の緑の部分(カンで5個にしました)を各数5ビットで表現し、つなげたものです。マスに入りうる数は1から25までなので、5ビットというのはちょっと冗長ですが、とりあえずはよしとしましょう。 出力はバイナリ形式で、1つの解に25バイト使います(1つのマスに入る数を1バイトで表現

リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く