【朗報】どうぶつの森の住人(NPC)は「迷路」を解けることが判明(動画は一度も迷うことなく釣りをしに行くおさいの様子です) #どうぶつの森 #AnimalCrossing #ACNH #NintendoSwitch https://t.co/DoBg0SbOTF

この記事について この記事では、一部で全方位木DP、Rerooting等と呼ばれているアルゴリズムの紹介/解説と、その実装についての簡単な説明を行います。 全方位木DPなどと物騒そうな名前がついていますが、発想自体は全く難しくありません。また、実装もそこまで難しいものではないです。 前提知識として、最低限のグラフ理論の知識(特に木構造について)を要求します。(有向木の根/部分木等…) 謝辞 この記事中に挿入されている図は、殆どを @259_Momone さんに提供して頂きました。素晴らしく美しい図を提供して頂き、この記事を分かりやすいものとして頂いたことに感謝いたします。 全方位木DPとは 各点から深さ優先探索を行って解くことができる問題のうち特定の条件(後述)を満たすものについて、全頂点についての答えを同等の計算量で求めることができるアルゴリズムです。 まず、全方位木DPで解くことができ
IT技術の発展に伴いIT人材(システムエンジニアやプログラマーなど)の需要が年々高まっているのにもかかわらず、IT人材不足が深刻だ。経済産業省によれば、2030年には実に45万人ものIT人材が不足するとの試算が出されている。 世界的に見れば、米国のGAFA(Google、Apple、Facebook、Amazon)や中国のBATH(Baidu、Alibaba、Tencent、Huawei)などの世界経済を牽引するIT企業を中心に、人材獲得が激化している状況だ。 いかにIT人材を確保するかが、日本の産業活性化に繋がると言っても過言ではない。そんななか、プログラミングスキルをコンテスト形式で評価する「競技プログラミング」の存在が注目を集めている。 今回は、世界3大競技プログラミングコンテストのひとつである「AtCoder」を運営し、数々の競技プログラミングコンテントで優勝経験を誇る、AtCod
こんにちは。TIG DXチーム 1の辻です。 先日開催された Go Conference 2019 Autumn に参加/登壇したので、その内容をレポートします。 The Gopher character is based on the Go mascot designed by Renée French. きっかけマネージャーとの面談で、勉強会やカンファレンスで登壇して貢献していきたいと話していたところ Go Conference 2019 Autumn の CfP を募集を見かけたので応募しました。 アイデアの種Go の goroutine や channel を用いることで並行処理をシンプルに書くことができます。基本的な計算をマルチスレッドで高速化する試みは、私が Qiita に書いた Golangを用いた様々な計算の高速化 の記事が詳しいです。 もちろん同じアルゴリズムを用いて G
この記事の目的ダイクストラ法の計算量は、O(ElogV)である。 仮に、エッジの長さが0か1ならばO(E)、つまりエッジの数に比例することになる。 「どうしてそうなるのか全く理解出来ない」と誰でも思うだろう。 優先度キューを使ってBFSで探索していけば、毎回エッジの分だけ分岐があるんだから なんらかの計算量はその分岐がどんどん積み重なっていき、 指数オーダーになってしかるべきだろう。 ふつうの人はそう考える。 どういうメカニズムで探索が省略されているのかなんとなく木を書き出して考えてみても、 なんとなくわかった気になったあとでやっぱりわからんとなる。 それが、ダイクストラ法を題材にしたちょっとした応用問題が出た時に手も足も出なくなる原因である。 グラフがぽいっと渡されて、はいs-t最短距離を計算してくださいと言われたら、 準備していたライブラリに食わせて終わりだが、 よく考えるとグラフ探索
随時募集しています 略称 正称 APSP All Pairs Shortest Path BB Branch and bound BBST Balanced Binary Search Tree BFS Breadth First Search BIT Binary Indexed Tree BM Berlekamp-Massey BM Boyer-Moore BSGS Baby-Step Giant-Step CHT Convex Hull Trick CRT Chinese Remainder Theorem D&C Divide and Conquer DAG Directed Acyclic Graph DEPQ Double-ended priority queue DFS Depth First Search DP Dynamic Programming DST Disjoin
2. 本研究で解く問題 「いざ研究しよう!」と思っても、条件や設定を決めないと何も始まりません。 まずは研究を分かりやすくするために、「一つの問題」に落とし込むことにしました。 問題設定 縦 $N$ 行・横 $N$ 列の大きさの碁盤の目があります。隣り合う交差点間の距離は 1 です。つまり、交差点が合計で $N^2$ 個あり、それぞれ座標 $(1, 1), (1, 2), ..., (1, N),$ $(2, 1), (2, 2), ..., (N, N-1), (N, N)$ に位置すると考えることもできます。 下の図は、$N = 4$ の場合の交差点の位置です。 あなたは、碁盤の目の交差点の位置は変えずに、道路の並びのみを変えることができます。上手く道路の並びを変えることで、できるだけ「便利」な道路網を建設してください。 「便利な道路網」って何? 私は、以下の 2 つの条件を満たす道路
はじめに 私が組み込みプログラミングを始めたころ(まだインターネットもなく組み込みマイコンもAKI-80とかZ80系主流で遊んでいた時代)に大学の先輩に教えてもらったテクニックです。今どきのCPU向けではないですが、私自身が古典的かつ重要な要素が含まれており、組み込みプログラミングに引き込まれたきっかけの一つでもありますので、当時を思い出しつつ記事にしてみます。 「ロックフリーなアルゴリズム」についてはこちらのWikipediaの記事がわかりやすいです。 これらのアルゴリズムは、割り込み禁止やミューテックスなどのロックを用いずに、割り込みハンドラやマルチタスク/マルチスレッドなどの異なる非同期な実行コンテキスト間で情報を渡すことを目的としており、今回はその応用内でのFIFOバッファの構成例となります。 近年ではArduinoなどの組み込みプログラミングも手軽に行える環境が増えています。また
この記事はC++ Advent Calendar 2014の21日目にエントリしています。 内容はC++メモリモデルと逐次一貫性についての概説記事となっています。 flickr / nomadic_lass もくじ 忙しい人のための「C++メモリモデル」 C++メモリモデル一問一答 ソフトウェアからみた「C++メモリモデル」 “メモリ”という共有リソース C++ソースコードが実行されるまで メモリの一貫性と整合性 逐次一貫性モデル is Easy ハードウェアからみた「C++メモリモデル」 ハードウェア・メモリ一貫性モデル C++コンパイラの責任と自由 強いメモリモデル vs. 弱いメモリモデル 逐次一貫性モデル is Hard (本文のみ約9600字) まえがき When your hammer is C++, everything begins to look like a thumb
逐次一貫性(sequential consitency)とは何か 最初に逐次一貫性の概念についてまず理解しよう 逐次一貫性はコンピュータシステムに関するメモリ一貫性モデルの一つであり、定義をWikipediaから引用すると「どのような実行結果も、すべてのプロセッサがある順序で逐次的に実行した結果と等しく、かつ、個々のプロセッサの処理順序がプログラムで指定された通りであること」とのことだ。 何のことだかよくわからんが、並列処理中の実行結果が常に逐次的に実行した場合と同等となる、ということのようだ。 例えば下記のようなコードがあるとして std::atomic<int> X(0), Y(0); int r1, r2; void thread1() { X.store(1); r1 = Y.load(); } void thread2() { Y.store(1); r2 = X.load();
プログラミングコンテストで数々の実績をもつ同校がなぜTOPSICを始めるに至ったのか。その背景からアルゴリズムの重要性まで、数理研究部顧問の内田芳宏教諭、TOPSICを運営するシステムインテグレータ代表取締役社長の梅田弘之氏、TOPSICの問題作成を手掛けるAtCoder代表取締役社長の高橋直大氏に話を伺った。 左からシステムインテグレータ梅田弘之氏、立教池袋中学校・高等学校 内田芳宏教諭、AtCoder高橋直大氏 設立47年の実績ある数理研究部 東京・池袋の立教大学の並びに建つ立教池袋中学校・高等学校は、立教大学をはじめとした有名大学への進学率も高く、中高一貫の名門校として人気を誇っている。クラブ活動の豊富さも特徴で、中でも1971年に設立された数理研究部は、歴史と伝統のある部活動の一つだ。 「数理研究部が始まった1970年代はまだ高等学校は設立されていなかったため、中学校しかありません
はじめに 長さ$N$の配列が与えられて,愚直に計算すると$\mathcal{O}(N^2)$かかってしまうところを,デック(deque)やスタックを用いてうまく計算することで$\mathcal{O}(N)$に改善することができる有名問題に次の2つがあります. 配列内の長さ$K ( \leq N)$の区間すべてに対して,その区間内の最大(最小)値を求める (スライド最大(最小)値) $N$個の幅$1$,高さ$H_i$($0 \leq i < N$)の長方形をこの順に並べてできるヒストグラムに含まれる長方形の面積の最大値を求める (ヒストグラム内最大長方形問題) この記事ではこの2つのアルゴリズムのポイントと類似点を自分なりの視点で解説します. 1. スライド最大(最小)値 解きたい問題は次のような問題です. 配列内の長さ$K$の区間すべてに対して,その区間内の最大(最小)値を求める 愚直な解
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く