タグ

algorithmに関するdiethのブックマーク (115)

  • 「線形代数で何を学ぶのか、何に役立つのか」大学や高専で線形代数を学び始めた人へ送るポスト→「学生時代に読んでみたかった」「意味や繋がりが理解できて初めて面白い」

    三谷 純 Jun MITANI @jmitani 筑波大学 システム情報系 教授('75生)CG/折紙/幾何/プログラミング.主に数学と折紙と日常のことについてツイートします.『日常は数学に満ちている(山と渓谷社)』.折紙作品の写真をこちらで公開しています instagram.com/mitani.jun/ mitani.cs.tsukuba.ac.jp/ja/ 三谷 純 Jun MITANI @jmitani 理工系の大学生1年生の多くは まずはじめの数学で「線形代数」を学ぶことになると思います。 僕が学生だった頃、 「結局これって何を勉強しているの?」 という疑問がずっと拭えなかった記憶があります。 同じような疑問を持っている学生向けに、線形代数で何を学ぶのか説明する文章を作ってみました pic.twitter.com/1jrD9MUo5p 2024-04-19 22:52:28

    「線形代数で何を学ぶのか、何に役立つのか」大学や高専で線形代数を学び始めた人へ送るポスト→「学生時代に読んでみたかった」「意味や繋がりが理解できて初めて面白い」
  • レトロゲームのドット絵の拡大表示と EOTF/OETF の関係

    この文書では、 レトロゲームを最新の PC やコンソールに移植するような場合に必要となる、 低解像度のドット絵をドット感を残しつつ高解像度ディスプレイに拡大表示する処理についてまとめます。 そして、拡大処理で見落としがちな問題とその解決方法、および改良と高速化について触れます。 この文書では、ごく基的なバイリニアフィルタによる拡大処理のみを取り扱います。 高解像度化技術周辺や、CRT のスキャンラインや画素の再現は、この文書で取り扱う範囲外なので一切触れません。 また、 話を簡単にするため、拡大結果を sRGB 規格のディスプレイに表示するケースのみを考えます。 筆者はディスプレイの規格が専門分野ではないので、 色の定義などの理解が甘い箇所があるかもしれません。あらかじめご了承ください。 何か間違いがありましたら、ご指摘いただければ幸いです。 ドット絵の滲みを再現したい 当時のドット絵は

    レトロゲームのドット絵の拡大表示と EOTF/OETF の関係
  • 数学入門公開講座|京都大学数理解析研究所

    数え上げ幾何学と導来代数幾何学 助教・金城 翼 平面上に三つの円が与えられたとき、その全てに接する円はいくつあるでしょうか?この問題はアポロニウスの問題と呼ばれ、2000年以上の歴史を持ちます。このような幾何学的な対象の数え上げを研究する数学領域を「数え上げ幾何学」と言います。数え上げ幾何学は素朴な出発点を持つ一方で、現代数学における様々な理論と関わり、現在でも活発に研究が行われています。特に、2000年ごろに登場した「導来代数幾何学」と呼ばれる代数幾何学の最新のフレームワークとの関連が近年注目を集めています。講座ではまず27の 直線などの古典的な数え上げ幾何学の問題を解説し、その後導来代数幾何学の哲学および数え上げ幾何学への応用を紹介します。 流体力学と数理科学諸分野との関わり 教授・大木谷 耕司 粘性流体のナビエストークス方程式を軸に、流体力学と数理科学諸分野との関係を垣間見る。

  • 暗号の歴史と現代暗号の基礎理論(RSA, 楕円曲線)-前半- - ABEJA Tech Blog

    はじめに このブログに書かれていること 自己紹介 注意 Part1 古典暗号 2つの暗号方式 スキュタレー暗号 アルゴリズムと鍵 シーザー暗号 原理 頻度分析 アルベルティ暗号 ヴィジュネル暗号 如何にしてヴィジュネル暗号は破られたか Part2 近代暗号 エニグマ エニグマの登場 エニグマの基構造 如何にしてエニグマは突破されたか 前提条件 必ず異なる文字に変換される性質を利用 ループを利用 まとめ 参考文献 採用情報 はじめに このブログに書かれていること 前半 古代暗号から始まる暗号の歴史 エニグマの構造と解読法について 後半(後半ブログは こちら) RSA暗号の基 楕円曲線暗号の基 自己紹介 こんにちは!株式会社ABEJAの @Takayoshi_ma です。今回のテックブログですが、ネタに5時間程度悩んだ挙句、暗号を取り上げることにしました!暗号化手法の解説にとどまらず、そ

    暗号の歴史と現代暗号の基礎理論(RSA, 楕円曲線)-前半- - ABEJA Tech Blog
  • ALG 敵移動の考え方 : プログラミング指南 - Code Knowledge

    プログラミング指南 - Code Knowledge ゲーム制作に関するプログラミング等を主に書き溜めていきます。ただ、どちらかと言えば日記的な書き方が続くと思いますが、そこは温かい目で見て頂ければ。あと、ちょっとしたサンプルやツールのダウンロードも出来るようにしておきます。 ゲーム制作において、かなり悩ましい問題はこの敵の移動処理です。今回はゲームのタイプに関わらない移動処理について、そのおおまかな考え方について私の実装方法を解説していきます。なお、移動とともに繋がりの深い表示と消去については、日を改めて記事化できればと考えています。 直進と方向転換 まず敵の位置を X,Y とします。そして、敵の進行方向を dir で表します。昔のゲームでは上下左右の4方向が大多数でした。これは X と Y をそれぞれ ±1 すれば位置が変更出来るため簡単だったからです。8方向だと斜め方向は ±0.70

    ALG 敵移動の考え方 : プログラミング指南 - Code Knowledge
  • ⚙️ Math Breakdown: Anime Homing Missiles

    I designed and prototyped the missile attack! The math was clever and I want to show-off! Let’s talk about cubic bezier curves, perlin noise, and rotation minimizing frames. Doing Ichirō Itano proud. I’ll keep this article a little lighter on code. I really want to focus instead on the geometry. Many people are intimidated by math, but keep in mind that you don’t need to understand everything to u

    ⚙️ Math Breakdown: Anime Homing Missiles
  • NeetCode

    A better way to prepare for coding interviews.

  • この木なんの木? モンテカルロ木と最良優先MiniMax木の"間"に存在する名もなき木々 - ヴァルの開発記

    概要 この記事ではまだ名前が無いと思われるゲーム探索木をいくつか紹介します。この記事では具体的な実装は示さず、概念の紹介にとどめます。 この記事を読むために必要な知識は以下です。 ・モンテカルロ木探索+UCB1 ・MiniMax探索 ・ボンバーマンの基的なルール 名のある木々 名もなき木々を紹介する前に、まずは名のある木々を紹介します。 MCTS モンテカルロ木探索。簡単に言えば、評価関数を使わず、ランダム試行を繰り返して勝率の平均が高い手を調べる手法です。 有名な木なので、検索するとたくさん解説がヒットするのでこの記事では説明を割愛します。 一応参考として、私が初めてMCTSを実装したときに参考にした論文を載せておきます。 →A Survey of Monte Carlo Tree Search Methods 最良優先MiniMax 最良優先MiniMax探索についてはこちらの論文が

    この木なんの木? モンテカルロ木と最良優先MiniMax木の"間"に存在する名もなき木々 - ヴァルの開発記
  • ヒープについてわかりやすく解説してみた – Yasufumi Taniguchi – Medium

    的なデータ構造であるヒープについて、概要、計算量と実装、そして最もシンプルな応用であるヒープソートを紹介します。MITが講義や資料を公開しているMIT OpenCourseWareのアルゴリズムとデータ構造の講義 が非常にわかりやすかったので、その内容に沿ってまとめました。この記事ではHeaps and Heap Sortの内容を以下の順序で解説します。 ヒープの概要ヒープの表現ヒープの構築ヒープの計算量ヒープの実装ヒープソート1. ヒープの概要ヒープ (heap) は優先度付きキュー (priority queue) の実装の1つです。優先度付きキューは集合 (set) を扱うデータ型で、集合に含まれる要素が何らかの優先度 (priority) 順に取り出されるという特徴を持っています。学会のポスター発表を回るときや、旅行先での観光地巡りでは、優先度に基づいて要素を取り出すことが重要

    ヒープについてわかりやすく解説してみた – Yasufumi Taniguchi – Medium
  • 転置インデックスの圧縮技法

    転置インデックスは、検索エンジンの実装において、中心的な役割を果たすデータ構造である。 転置インデックスのデータ構造とアルゴリズムは、クエリ処理アルゴリズムとともに、検索エンジンの性能に直結する。とくに大規模な検索エンジンにおいては、キャッシュ効率を高めてクエリ処理を高速化するために、転置インデックスの圧縮は必要不可欠となっている。 この記事では、転置インデックス、とくにポスティングリストの圧縮について、近年の手法を簡単にまとめる。 目次 転置インデックスの基 転置インデックスのデータ構造と特性 転置インデックスのアクセスパターン 近年のインデックス圧縮技法 Variable-Byte Family VByte Varint-GB Varint-G8IU Masked-VByte Stream-VByte Opt-VByte Simple Family Simple9 Simple16

    転置インデックスの圧縮技法
  • それ、非再帰で書けます - Qiita

    まだ再帰関数書いてるの? 再帰関数はプログラミング言語の有用な機能で、深さ優先探索をベースとする様々なアルゴリズムの実装として有用です。 その一方で、関数呼び出しはオーバーヘッドが大きく、定数倍が弱くなります。また、JavaPythonなどのスタック領域の制限が厳し目の言語では深すぎる再帰のせいでRuntime Errorが発生する場合があります。 C++などのコンパイル言語ではインライン展開によって関数呼び出しのオーバーヘッド解消されることもありますが、再帰関数は中でもインライン展開の難易度が高く、深い再帰ではそのまま実行せざるを得ない状況になります。 ところが、再帰関数は生のスタックを自分で用意するなどして非再帰に書き直すことができます。(「停止する再帰的処理は常に同じ時間・空間計算量の非再帰処理に書き換えられる」、真っぽいのですが厳密な証明が見つけられなかったのでもしかしたら反例が

    それ、非再帰で書けます - Qiita
  • 浅野紀予「ベリーピッキングモデルで考える探索と検索」 | ÉKRITS / エクリ

    探すこと。ときどきふと、じぶんは人生で何にいちばん時間をつかってきたか考える。答えはわかっている。いつもいちばん時間をつかってきたのは、探すことだった。長田 弘『最後の詩集』 探索と検索、それぞれの意味 私たちは日々の生活の中で、さまざまなものを探し求めています。着るものやべるものに始まり、勉強や仕事に必要なもの、趣味や娯楽として手に入れたり体験したいもの、問題や悩みごとを解決する方法や手がかりなど、ありとあらゆる「探しもの」をしています。 「探しもの」をするのは人間だけではありません。物や住処、求愛の対象や仲間を探すといった行動は、動物たちも行なっています。でも、インターネットとWebの技術が誕生したことで、人間の「探しもの」の可能性は、それ以前よりも大きく広がりました。昔から、他の動物と同じようにオフラインで行なってきた「探索(seeking)」という普遍的な行動に加えて、人間はオ

    浅野紀予「ベリーピッキングモデルで考える探索と検索」 | ÉKRITS / エクリ
  • 積の和典型 - Shirotsume の日記

    最近積の和典型が話題になっているので書きます。 N個のマス目が横一列に並んでいる状況を考えます。初め、全部のマスは白色です。このうち K 個のマスを選んで黒く塗った時にできるマスの状態は何通りでしょうか? これを こうする これは 通りです。 これを応用すると、次のような問題が解けます。 長さが N であって、総和が M である非負整数列の個数を求めよ。 非負整数列というのは、各要素が負の数でない整数からなる数列です。[1, 2, 3, 4, 5] とか [0, 0, 1, 4, 3] とかです。これの個数を数えるのに、先ほどのマスの数え方を使うことができます。 まず、 M + N - 1 個の白いマス目を用意します。そのあと、そこから N - 1 マス選んで塗ります。こうしたとき、必ず M 個のマスが白いままで残っています。また、マスの両端や黒マスを境目として考えると、白いマスが連続する

    積の和典型 - Shirotsume の日記
  • テキストエディタで使われがちなデータ構造 Piece Table の概要と実装 - A Memorandum

    テキストエディタのデータ構造 Gap method Piece Table method Piece Table の構造 Piece Table の実装 Piece Table のメソッド まとめ テキストエディタのデータ構造 テキストエディタで採用されているデータ構造にはいろいろあります。 こちらの論文 Data Structures for Text Sequences では各種データ構造について比較検討されています。 多くは、Gap method や Piece table method をベースにしたものが多いのではないでしょうか(図で言う最下部の中心の丸印に当たります)。最近では Rope なども有名ですね。 Gap method Gap method では、現在のカーソル位置で、テキストバッファを2つに分割し Gap を間に挟み、カーソル位置に対する編集(テキスト追加/削除)を

    テキストエディタで使われがちなデータ構造 Piece Table の概要と実装 - A Memorandum
  • みんな、とにかくオセロAIを作るんだ - Qiita

    Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? オセロAIってなんか難しそう?そんなことはありません。むしろゲームAIを学ぶ様々なレベルの人にこれ以上ないくらい最適です。この記事ではオセロAIを作ると何が良いのかをひたすら語っていきます。そしてオセロAIをこれから作る人のために参考になりそうな記事をいっぱい貼り付けていきます。 私自身はもうかれこれ1年以上オセロAIにどっぷりハマっています。詳細は以前書いた記事で。 オセロAIをおすすめする3つの理由 1. 原始的なゲーム木探索を学べる オセロは「二人零和有限確定完全情報ゲーム」と呼ばれる種類のゲームです。この名称を説明すると、 二人

    みんな、とにかくオセロAIを作るんだ - Qiita
  • Hamko Wiki

    プロコン コーディングイディオム 非厳密アルゴリズム アルゴリズムの構築法 🔗概要 僕ははむこです。 Twitter: hamko_intel AtCoder: hamko 青 1854 (Highest 2018) Codeforces hamko オレンジ 2121 アルゴリズムよく知らない人間の「一から自分で作ります!」ってメッチャ嫌な予感しません? 世の中には必要になってから勉強すればいいことと、知らないとそもそもどうしようもないことがあって、アルゴリズムとデータ構造は後者に分類されると思います。なぜなら、それらを知らない限りそれを使って解ける問題を想像し得ないからです。 競プロをやってるメリットの一つとして, 罪悪感なくコードを書ける (今自分が書いているコードが効率的だというある程度の自信を持って書ける)というのがある 🔗僕が強くなるために ランダムにアルゴリズムを立てず、

  • ランダムを楽しもう / Algorithm with Randomness

    スライドでは、以下の2つの内容を紹介します。 1.乱択アルゴリズム(乱数を使って問題を解くアルゴリズム) 2.ランダムな入力に対するアルゴリズム

    ランダムを楽しもう / Algorithm with Randomness
  • 30 分でわかる!アルゴリズムの基本

    このスライドは、2022/4/14 に実施されたイベント『問題解決のための「アルゴリズム × 数学」- Forkwell Library #1』の基調講演を加筆修正したものです。実際の講演(35 分)を見たい方は、以下の URL をご覧ください。 https://www.youtube.com/wat…

    30 分でわかる!アルゴリズムの基本
  • 50分で学ぶアルゴリズム / Algorithms in 50 minutes

    スライドでは、有名なアルゴリズムを概観し、アルゴリズムに興味を持っていただくことを目標にします。 第 1 部:アルゴリズムとは 第 2 部:学年を当ててみよう 第 3 部:代表的なアルゴリズム問題 第 4 部:コンピュータとアルゴリズム

    50分で学ぶアルゴリズム / Algorithms in 50 minutes
  • はじめに - アルゴリズムとデータ構造大全

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