Entries from 2019-01-01 to 1 year

ハイティング代数の勉強

J. ヨスト著, 清水勇二訳 現代数学の基本概念 上 を読んでいて、p.35 の練習問題が難しかったので、この問題について書いておく。 p.35の練習問題とは、ハイティング代数において以下を示すことだ。 ハイティング代数は0と1を持つ束で冪対象を持つ。 冪対象…

Kleisli圏の単位律と結合律

西郷 甲矢人 (著), 能美 十三 (著) 圏論の道案内 ~矢印でえがく数学の世界~ (数学への招待シリーズ) の「第9章モナド」で、モナドから随伴を作るときにKleisli圏という圏が登場した。 この記事では、Kleisli圏の単位律と結合律についてまとめてみる。 まず、…

C言語で浮動小数点数をビットパターンに変換する方法

1.0の64bit浮動小数点数、32bit浮動小数点数、16bit浮動小数点数でのビットパターンを求めます。 a.c #include <stdio.h> #include <stdint.h> int main() { union A { double d; float f; _Float16 f16; uint64_t i64; }; union A a; a.d = 1.0; printf("64bit 0x%lx\n", a.i64</stdint.h></stdio.h>…

Pythonで浮動小数点数をビットパターンに変換する方法

64bit浮動小数点数(1.0の例) >>> import struct >>> hex(struct.unpack('<Q', struct.pack('<d', 1.0))[0]) '0x3ff0000000000000' 32bit浮動小数点数(1.0の例) >>> import struct >>> hex(struct.unpack('<I', struct.pack('<f', 1.0))[0]) '0x3f800000' 16bit浮動小数点数(1.0の例) Python3.6以上で動く >>> import struct >>> hex(struct.unpack('</i',></q',>

Vim練習1

正規表現で検索した文字列を置換する方法 ファイル全体に対して、一括で置換を行うコマンド :%s/\v<正規表現>/<置換後文字列/g ドットコマンドを使って置換を行う方法 まず、以下で検索する /\v<正規表現> 次に1つ目の検索対象を置換する cgn<置換後文字列>…

自分用メモ ARM64クロスコンパイルとx86_64での実行

参考サイト qiita.com 環境はx86_64, Ubuntu 18.04.2 LTS。 まず、qemuとg++-aarch64-linux-gnuを以下のようにインストール。 $ sudo apt-get install qemu $ sudo apt-get install g++-aarch64-linux-gnu helloworld.c #include <stdio.h> int main() { printf("hell</stdio.h>…

GroverアルゴリズムでSAT問題を解くための繰り返し回数がわからない

以下のの絶対値を最大化させるを求めたいが、なかなか簡単にならない。 ]

Groverのアルゴリズム

勉強中の量子アルゴリズムについてまとめます。間違いがありましたら、コメントください。 Groverのアルゴリズムはnビットで表される個のビット列から、1個のビット列を探し出す量子アルゴリズムです。 アルゴリズムはおおまかには以下です。とします。 量子…

量子コンピューティング向け言語Q#の問題集 QuantumKatas Teleportation Task 4.1〜4.2 Alice, Bob, Charlie

Task 4.1〜4.2はAlice, Bob, Charlieが登場する量子テレポーテーションの問題です。 Task 4.1は、Alice, Bob, Charlieの状態を|Ψ³⟩ = (|000⟩ + |011⟩ + |101⟩ + |110⟩) / 2 にするという問題です。 Task 4.2は、以下の設定です。 Aliceがメッセージの量子ビ…

量子コンピューティング向け言語Q#の問題集 QuantumKatas Teleportation Task 1.5~1.7 メッセージがパウリ行列の固有状態のときのテレポーテーション

Task 1.5~1.7 はパウリ行列の固有状態をメッセージとするテレポーテーションです。 登場人物は以下の3つです。 AliceからBobに伝えるメッセージの量子ビット Aliceの量子ビット Bobの量子ビット テレポーテーションのおおまかな手順は以下です。 AliceとBob…

C言語でPythonのモジュールを自作する

C言語でPythonのモジュールを自作する方法を書く。 環境 Ubuntu 18.04.2 LTS Python 2.7.15rc1 参考にしたサイト Pythonインタプリタの拡張と埋め込み CUBE SUGAR STORAGE Python: Wheel でパッケージを配布する 1. 準備(virtualenvで実験用環境を作る) virt…

量子コンピューティング向け言語Q#の問題集 QuantumKatas Measurements Task 1.10 ベル状態の識別

Task 1.10は、4つのベル状態を識別する問題です。 解答1 // Task 1.10. Distinguish four Bell states // Input: two qubits (stored in an array) which are guaranteed to be in one of the four Bell states: // |Φ⁺⟩ = (|00⟩ + |11⟩) / sqrt(2) // |Φ⁻⟩ …

量子コンピューティング向け言語Q#の問題集 QuantumKatas Superposition Task 15

Superposition Task 15は2日くらい悩んでやっとテストが通った。 Task 15は、次の入力状態からゴール状態を作る問題。 入力状態: N個の量子ビットの状態|0...0> (Nは2の冪乗とは限らない) ゴール状態: W stateという状態、すなわち、 (|10...0> + |010...0> …

QuantumKatas Superposition Task 14

// And関数を使うためにimport open Microsoft.Quantum.Extensions.Bitwise; // Task 14**. W state on 2ᵏ qubits // Input: N = 2ᵏ qubits in |0...0⟩ state. // Goal: create a W state (https://en.wikipedia.org/wiki/W_state) on these qubits. // W st…

QuantumKatas Superposition Task 12

量子コンピューティングの問題集Microsoft/QuantumKatasでは、Q#プログラムを完成させてユニットテストを実行することにより、問題を解いていくことができます。 今回は、解くのに時間がかかった問題Superposition Task 12について、紹介します。 ユニットテ…

Q#のQuickstartをやってみた

docs.microsoft.com ファイル構成 Bell.qs デバイス側のQ#プログラム。量子ビット(Qubit)に対する操作(operation)を記述。 Driver.cs ホスト側のC#プログラム。デバイス側のoperationを呼ぶ。 Bell.qs namespace Bell { open Microsoft.Quantum.Canon; open …

C++メモ

コンパイルエラー $ clang++ test.cpp test.cpp:18:6: error: non-const lvalue reference to type 'C' cannot bind to a temporary of type 'C' C &c = test(); ^ ~~~~~~ 1 error generated. 上のコンパイルエラーになるソース #include <cstdio> class C { public:</cstdio>…

Microsoft Quantum Development Kitのインストール

環境 $ lsb_release -d Description: Ubuntu 18.04.2 LTS 参照サイト https://docs.microsoft.com/en-us/quantum/install-guide/command-line?view=qsharp-preview 手順 参照サイトに書いてあるとおりにインストールします。 .NET Core SDK 2.0以上(Build Ap…

vim設定メモ

vim初心者の設定です。 以下を行うための.vimrc #で→方向に幅を大きくする "で←方向に幅を小さくする +で↓方向に高さを大きくする -で上方向に高さを小さくする eでファイルツリーを出す gph.is set nowritebackup set nobackup " vim の矩形選択で文字が無…

グラフの圏における冪対象

グラフの圏の対象はグラフである。をエッジ1つの対象、をノード1つの対象とする。 この圏における冪対象, , , はそれぞれどんなグラフだろうか? の形 グラフがどんな形をしているかを調べるためには、まず、射, 射がそれぞれ何個あるかを調べる。 また、グラ…

冪対象に関する定理

定理 を示す ① 射の定義 評価写像を使った以下の図式が可換である。 また、以下の図式も可換である。 次に、2つの評価写像 と、以下の2つの可換図式を使って 2つの射 を定義する。 ここで、以下を可換にする唯一の射をと定義する。 すなわち、 が成り立つ。 …

texインストールメモ

以下の記事を参考にさせていただきました。ありがとうございます。 Ubuntu上でtexをコンパイルしてpdfとして保存する - Qiita TeX入門 http://www.math.u-ryukyu.ac.jp/~tsukuda/computer/tex/files/xypic-example.pdf texliveをインストールしました。 圏論…

Conceptual Mathematics, Session29, Exercise1

対角線定理(Diagonal Theorem) 積を持つ圏で考える。 対象が以下の命題1を満たすならば、任意のendomap は少なくとも1つの不動点を持つ。 すなわち、を満たす点が存在する。 命題1 射が任意の射をパラメタライズできるような対象を持つ。 すなわち、と表せ…

MathJaxのテスト

デフォルトでMathJaxに対応していたようだ。ヘッダに何も指定していない。 文中の式。 ラグランジュ方程式はです。 可換図式も書けた。\\を\\\に変えたら改行されるようになった。