ここからどういう方向に進むのかが問題だ

準備は整った.さて,ここからどういう方向に進むのかが問題だ.ストレートにラテン群表に舵を切るか,もう少し環境を整えてからじっくり進めることにするか?いずれにせよ,VS2019から2022に移行することが必要になることは目に見えている.この移行を滑らかに進めるためには,2019でできることをできる限りやっておくことではないだろうか?アリアドネの糸巻きは3年前に着手したプロジェクトだが,完成する前に中断した状態になっている.これを正当に継承することも必要なのではないか?その意味では,中間形態ではない完了形態としてアリアドネの糸巻きを仕上げておくということも必要なのではないだろうか?

それは悪いアイディアではないと思う.かなりの期間開発から外れていたので,いろいろなところがおぼろになっている.その辺りを突き固めるためにも有効なのではないか?Visual Studio には開発支援のためのさまざまなツールないし環境が提供されているが,まだ一度も使ったことがない.コード分析というのは中でも一番基本的なものであり,2022以降では必須ということになりそうな気配もあるので,まず,これを試してみることにしよう.通常のビルドではエラーは発生しない.

最後に一つだけ,「プロジェクトのプロセッサ アーキテクチャ “MSIL” と、”ElsieProject.dll” のプロセッサ アーキテクチャ “x86” の間には不一致がありました。」が出ているが,これはおそらくすべてのプロジェクトをx86に切り替えないと解消しないのではないかと思う.そうできるかどうかも不明だし,少なくともいまはその時期ではないだろう.

分析メニューの下にはコードのクリーンアップというのがある.プロファイル1と2があるが,どちらも中身は同じようだ.ドキュメントのフォーマットの自動整理のようなことをやっているのだが...これはお任せでよいと思う.さてコード分析だが,こちらはかなり大量の警告が出る.とりあえず,プロジェクト単位に片付けることにしよう.まず,その前に開始プロジェクトをバックアップしてから始めるとしよう.

▲なぜだろう?マウスは共有できているのに,キーボードの共有ができない.⇒今まで使えていたはずだが...⇒キーボードを開発機に繋ぎ変えて使えるようになった.理由は分からない.

▲警告    C6001    初期化されていないメモリ ‘bn’ を使用しています。    Ariadne100    D:\アリアドネの糸巻き\Ariadne100\Algorithm.cpp    87   

GetStartPointという関数だ.確かにまったく初期化されていない変数bnをHB[i]に入れている.この関数は「ハッセ図を解析して,開始点を決定する」ものだ.何のハッセ図か?内部でSBとHBという2つのテーブルを構成している.その他に,グローバル変数としてSという2次元配列が使われている.このテーブルには「Shuffle convert table2」というコメントが付いている.その他にも一文字変数でF, D, L, R, G, H, PT, PSというのが使われている.意味がわかった.

bnはMakeHasseDiagramでbnを参照渡しで更新している.これがエラーになるとすれば,参照渡しという引数が使えなくなる...⇒これはとりあえず,変数を直接として渡すことにしよう.⇒いや,この対応は間違っている.単純にbn=0としておけばよいだけだ.

類似エラーとして,

▲初期化されていないメモリ ‘P’ を使用しています。⇒Pは配列で,ループの中で初期化されているが,意味が通じていないようだ.面倒くさいので最初に0クリアしておこう.int P[DMAX + 1] = { 0 }; でよい.

▲フォルダを「アリアドネの糸巻き」に指定したら,エラーが出た.

‘Microsoft.Common.CurrentVersion.targets’ を開こうとしたときに ‘その他のファイル’ でエラーが発生しました パス ‘C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Current\Bin\Microsoft.Common.CurrentVersion.targets’ の一部が見つかりませんでした。

▲ 演算のオーバーフロー: 4 バイトの値に演算子 ‘*’ を使用し、結果を 8 バイトの値にキャストしています.ABORTLIMIT (NN*NN*0.5)というマクロだ.NNはintでx86では4バイトかもしれない.NNはグラフの頂点数で高々1000くらい.int()でキャストしたら収まった.

▲文字列 ‘s’ は 0 で終了しない可能性があります.⇒{0}で初期化.

▲初期化されていないメモリ ‘D’ を使用しています。⇒ループで初期化しているのだが...1発進がまずいのだろうか?⇒{0}で初期化.

▲index’ から無効なデータを読み取っています: 読み取り可能なサイズは ‘(unsigned int)bn*sizeof(int)’ バイトですが、’8′ バイトを読み取る可能性があります。⇒これは完全な誤読と思われるが,どう対処したらよいか?ソースファイル内で止めるという方法もあるらしいが...配列ではなく,ヒープを使っているために混乱している模様だ.メモリサイズをbn+1にしたら一応解消したが,if (index[i] > index[j]) でまた止まった.j=i+1としているので,iより大きいと思いこんでいるのだろう.実際は,j<bnで押さえているのだが...

同種のエラーが8箇所ほどある.あるいは,int *index に対し,index[i]のように配列としてアクセスしているのが気に入らないのだろうか?むしろ,配列として生成し,解法すればよいのではないか?というか,ローカル変数なのだから自動的に解放されるだろう.いや,どうも配列サイズは定数でなくてはダメなようだ.その代わり?vectorなら動的に生成できるようだ.どうもだいぶ込み入った話になってきた.これは結局 vector を使えという話ではないだろうか?

上では{0}でゼロで初期化としていたが,{} で初期化する方が安全なようだ.{a}とすると,aで埋め尽くすのではなく,最初の1個だけがa,残りは0ということになっているようだ.

std::vectorを使ってエラーは解消した.すべてこれで通すことにしよう.⇒すっきりと,全部消えた.これでよいことにしよう.

▲zeta = hugenum((N – u) + N * (N – v)); のエラーが取れない.どうキャストすればよいのか?hugenumというのは自前の関数のように思われるが,.upperにlong double の値を格納し,.lowerにはulongint の値を格納している.何をやりたいのかよく分からない.これはおそらくBigIntegerのようなものを自前で作りたかったのではないだろうか?

BigIntegerはこのプロジェクトでは3個所にしか現れない.Form2.vbのColoringStripeとColoringOn,ColoringCycleだけだ.BigIntegerを使っているのは,ModPowという関数が使いたかったためではないかと思う.計算結果はInt64に格納されている.2023/09/16にはhugenumの名前が出てくる.ここで,「matrixはhugenumの行列になっている.これをcpp_intに切り替えるか,ないしC#に持ち出してBigIntegerが使えるようにしなくてはならない.」という話が出てくる.

cpp_int というのは,Boost Multiprecision Library 入っているクラステンプレートで,任意サイズの整数が扱えるとなっている.つまり,BigIntegerと同等なのではないだろうか?結局この作業は中断して終わることになるのだろう.cpp_intでは固定サイズの int128_t とか,uint256_t などというのも扱えるようだ.boostより高速なGMPというのもあるようだ.C#にはBigInteger があるが,使われた形跡はない.

ElsieComeBack にはPsiNumbers.h というファイルがあり,多分このψ数というのが巨大数になるのではなかったろうか?ElsieProject というプロジェクトにはラッパーしか入っていないので,

所内LANとネットの切り分けができた

所内LANとネットの切り分けができた!GLO4P-FIRSTにUSB接続という方法があった.完璧に動作している.もう,これで怖いものなしだ.開発機とサブノートはイーサで接続し,MWBでマウスとキーボードの共有ができている.ネットアクセスはサブノート単独でスマホのテザリングを使って行う.開発機はネットから完全に遮断された.実に気持ちがよい.祝杯を上げなくてはならないだろう.どうしてこんなことに気づかなかったのだろう.きっかけは,デバイスにMicro SDのコネクタが付いているのを見つけたためだ.ネットでGLO4Pのマニュアルを探したら,USB接続のことが書いてあった.もし,使えるのなら,このMicro SDも使えるようにしておきたい.

mmm… ちょっと不安になってきた.デスクトップ上にEMOBILE GLO4P Setting Tool のアイコンができているが,これをダブルクリックして「このサイトにアクセスできません」になってしまった.しかし,ネットは活きている.Setting Tool というのはデバイスの設定用ツールと思われる.とりあえず,動いているのでよいとしておこう.Micro SDはUSBメモリ的な用途にしか使えないようだ.つまり,共有はできないように思われる.容量もかなり小さい.最大でも64GBだ.⇒読み書きできるかどうか?だけでも確認しておこう.手元には256GBというのしかないので,ちょっと無理なのではないか?まぁ,そこまでやらなくてもよいということにしておこう.

VS2019の再インストールに成功した

VS2019の再インストールに成功した.ほとんど奇跡と言ってもよい.VS2019はすでにサポート終了していて,ダウンロードできない状態になっている.中にはいまでもダウンロードできるというもぐりのサイトもあるが,昔この種のものをダウンロードしてひどい目にあったことがあるので,手は出せない.古いインストーラが残っていれば今でも使えるという情報があったので,バックアップを探しまくってようやく発見した.ちゃんと動いた.すでにインストール完了している.

bluetoothで接続できない状態になっている.2020/10/11にはUSBテザリングが使えるという記録があるのだが,あの頃何を(スマホ)使っていたのだろう?ともかくUSBはまったく認識されないので,使いようがない.bluetoothは一時不調だったが,いまは使える状態になっている.いや,繋がっていない.少なくともネットにアクセスできる状態にはなっていない.ようやく繋がった!どうも,bluetoothとwifiが並列で使えるようだ.MouseWithoutBordersが作動している.これで安定してくれればよいのだが...一応使える状態になっているので,当面これでゆくことにしよう.どうもやはり競合が発生しているような...

もう少しこの続きがあったのだが,消えてしまった.まぁ,大したことは書いてなかったと思うが...bluetoothとwifiを両立させるのはやはり難しい.いや,繋がった.これが続けばよいのだが...あるいは,切れてもすぐに復旧できれば我慢できるのだが...やはり切れてしまう.やはりダメと判定するのが正しいように思われる.あきらめよう.

VS2019 を起動してアリアドネの糸巻きを読み込んでみた.画面外にフォームのデザイン画面が開いている.こういうのは見たことがない.

image

これは多分開発画面に取り込もうと思えばそうできるはずだが...ビルドも何もせず,いきなりデバッグモードで実行⇒動いた.やはり,2019で開発していたことは間違いない.これでようやくスタート地点に立てる.画面を使い慣れたモードに作り変えるのが大変だ.もしかしたらどこかに設定をエクスポートしたものが残っている可能性はあるが...まぁ,ぼちぼちやることにしよう.ともかく,動きさえすればあとはなんとかなるからね!エラーが出ているようだ.

‘Microsoft.Common.CurrentVersion.targets’ を開こうとしたときに ‘その他のファイル’ でエラーが発生しました
パス ‘C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Current\Bin\Microsoft.Common.CurrentVersion.targets’ の一部が見つかりませんでした。

このエラーは「Visual C++再頒布可能パッケージ」に関係しているようだ.何かインストールで不足しているものがあるのかもしれない.

outputを出したが,デバッグモードで走らせているのに何も出力されない.このプログラムにはプロジェクトが4つ入っている.Ariadne100, ElsieComeBack, ElsieProject, アリアドネの糸巻きだ.最初の3つはC++,糸巻きはC#とVBが相乗りしている.開発環境を閉じようとしたら,エラーになった.

image

再頒布パッケージというのをインストールしてみたが,状況は変化していない.また,

4>E:\Visual Studio 2019\Commulity\MSBuild\Current\Bin\Microsoft.Common.CurrentVersion.targets(2203,5): warning MSB3270: 構築されているプロジェクトのプロセッサ アーキテクチャ “MSIL” と、参照 “D:\アリアドネの糸巻き\Debug\ElsieProject.dll” のプロセッサ アーキテクチャ “x86” の間には不一致がありました。この不一致は、ランタイム エラーを発生させる可能性があります。プロジェクトと参照の間でプロセッサ アーキテクチャが一致するように、構成マネージャーを使用してターゲットとするプロジェクトのプロセッサ アーキテクチャを変更するか、ターゲットとするプロジェクトのプロセッサ アーキテクチャに一致するプロセッサ アーキテクチャとの依存関係を参照で設定することを検討してください。

というエラーが出ている.

コード分析というのを実行したら,エラーが山ほど出てきた.650件もある!このプログラムは厳密動作させる必要があるので,これらのエラーをすべて取り除く必要がある...

ゼルコバの木を動かしてみよう

開発環境でゼルコバの木を動かしてみる.プロジェクトはEドライブ(開発支援)にあったものだ.開始ボタンでビルドが始まった.すべて作り直しているようだ.出力画面の文字が小さい.もう少し大きくしないとかなわない...ビルドが終わるとそのまま実行に移り,画面を開いた.横書き系図だ.

▲Ancestry.zelを開こうとしてエラーになった.

image

読み取りアクセス違反で例外が発生している.gbox がヌルポインタだという.ソースコードの変数名の上でマウスをかざしても値が表示されない.ZEL に入っていた,「コイン投げ2分木」は開けた.

image

どうも古い(ゼルコバの木ネイティブの)ファイルは開けなくなっているようだ.一応,プロジェクトのバージョンを確認しておこう.ZELKOVA 2024-06-20というのがあった.おそらく,これが最新と思われる.いや,もう一つその後もある.ZELKOVA 2025-02-06だ.数学系で使い始める前の版は公式リリースにバックアップがある.公式リリースと安定版というのがあり,ほとんど2022年版だが,公式版の中には2023年という日付のものも混じっている.

コラッツなどでもかなりサンプルを作っているはずだが,どこにあるのだろう?今のところ見当たらない.まったく保存していないということも考えづらいのだが...いや,コラッツなどではZELではなく,別形式で保存していた可能性はある.⇒2つの形式がある.①グラフ隣接リスト *.ADLと②一覧表データ形式 *.CSVだ.ADLファイルは見当たらないが,CSVはかなり残っている.

VB\コラッツ予想に分散してCSVがある.いや,ここにはADLファイルもかなりの本数残っている.ゼルコバの木は主にコラッツ予想に関して使われていたようだ.それ以外では使われていた形跡がない.とりあえず,これはこれでよいとしておこう.Dドライブの版とZELKOVA 2025-02-26 はソースレベルで一致した.基本的に最新版とみてよさそうだ.ゼルコバの木に手を着けるとやることが山のように出てしまうので,とりあえず,これでフタをしておこう.

アリアドネの糸巻きに再挑戦することにしよう.開発環境に入っているのは,2023-11-30 に最終更新されたものと見られる.Eドライブにバックアップがあるので,ここから始めることにする.バックアップの方はファイル名に日付を入れておいた.⇒v142 のビルド ツールが見つかりませんというmsgが出た.

「D:\アリアドネの糸巻き\ElsieComeBack\ElsieComeBack.vcxproj : warning  : v142 のビルド ツールが見つかりません。v142 ビルド ツールを使用し、v142 をインストールしてビルドします。」

https://qiita.com/sotahi/items/685e8bf25edac39b67ae

個別プロジェクト→プロパティ→構成プロパティ→全般→プラットフォームツールセットでV141(VS 2017)を選択して動作した.

「1>C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\VC\VCTargets\Microsoft.Cpp.WindowsSDK.targets(46,5): error MSB8036: Windows SDK バージョン 10.0 が見つかりませんでした。必要なバージョンの Windows SDK をインストールするか、プロジェクト プロパティ ページで SDK バージョンを変更するか、ソリューションを右クリックして [ソリューションの再ターゲット] を選択してください。」

ソリューションの再ターゲットを実行する.SDKバージョンは複数あるが,最新の10.0.22621.0で実行.⇒再ビルドして一つだけ警告が出た.

「4>C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\MSBuild\15.0\Bin\Microsoft.Common.CurrentVersion.targets(2110,5): warning MSB3270: 構築されているプロジェクトのプロセッサ アーキテクチャ “MSIL” と、参照 “D:\アリアドネの糸巻き\Release\ElsieProject.dll” のプロセッサ アーキテクチャ “x86” の間には不一致がありました。この不一致は、ランタイム エラーを発生させる可能性があります。プロジェクトと参照の間でプロセッサ アーキテクチャが一致するように、構成マネージャーを使用してターゲットとするプロジェクトのプロセッサ アーキテクチャを変更するか、ターゲットとするプロジェクトのプロセッサ アーキテクチャに一致するプロセッサ アーキテクチャとの依存関係を参照で設定することを検討してください。」

これはとりあえず,無視.いろいろ面倒なので,VS 2022を使うことにする.その前に設定をエクスポートしておいたのだが,うまくインポートできない.無効なデータが含まれているというエラーになる.

「D:\Microsoft Visual Studio\2022\Community\Web\Snippets\HTML\1041\HTML\audio.snippet: 言語の属性がないか、または無効です。」

のようなエラーが何本も出ている.エクスポートしたファイルを読み込んで移植はできたようだ.ただし,複数の警告が出ている.

警告 1:  カテゴリ ‘ウィンドウ レイアウト’ ({eb4ba109-a9db-4445-bd09-e7604bcdce84}) はインポートされませんでした。別のバージョンの Visual Studio を参照しており、このカテゴリはバージョン間で移植できません。
警告 2:  カテゴリ ‘テストの実行’ ({48d11193-265d-1458-743e-2b88c655b377}) はインポートされませんでした。別のバージョンの Visual Studio を参照しており、このカテゴリはバージョン間で移植できません。
警告 3:  カテゴリ ‘外部 Web ツール’ ({b521100c-f698-4018-b1cf-6421fc59fa9b}) はインポートされませんでした。別のバージョンの Visual Studio を参照しており、このカテゴリはバージョン間で移植できません。
警告 4:  カテゴリ ‘パッケージの復元’ ({03D27F49-12E4-4282-94F3-03A8AEF90B8F}) はインポートされませんでした。別のバージョンの Visual Studio を参照しており、このカテゴリはバージョン間で移植できません。

どうも,バージョンの異なる環境間で設定を共有するのは難しそうだ.使い慣れた構成にしておきたいのだが...どういうペーンを開いているか現物を見ながら真似してみよう.というか,まず,その前にビルドを通しておこう.⇒なぜだろう?今度はまったくエラーなしに完了した.⇒いや,ダメだ.実行すると,有効なWin32アプリケーションではありません,が出る.Debigモードではv142 がないというエラーが出てしかも,それが解消しない.(v141に設定しているのに)どうも,野壺にはまってしまったような感じだ.

もう一度VS 2017に戻って,最初のバックアップから初めてみよう.⇒最初からV142がないというのが出てくる.VS2019は以前使っていた痕跡があるが,EXEの現物が消えている.この当たりがおかしいような気がする.VS Installer で見ると,VS2019は2019(2)のような表示になっている.ダブってインストールされた可能性がある.起動すると,コマンドプロンプトが立ち上がってくる.一度アンインストールしてインストールし直すことにする.⇒まず,VSインストーラの更新が入って,それからアンインストールが始まった.かなり時間が掛かっている.アンインストールは完了したが,使用可能タブにVS 2019が見当たらない.というか,VS2016 Insiders というのしかない.

VS 2019 Communityはダウンロードできないようになっている.サポート終了ということなのだろうか?まさか,有償化ということではないと思われるが...おそらく,2017や2022も一旦アンインストールしたら復活できないという作りになっているのではないだろうか?さて.どうしたものだろう?VS2019は2024年4月にサポート終了となっている.Communityのインストーラがあればまだ使えるという話もあるが,流石に残っていない.いや,あった!

ただし,VS 2017 Communityだ.これはまだ活きている.出てきた!VS 2019 Community のインストーラだ.すべてインストールすると32GBだ.空き容量があるだろうか?Cドライブが58.9GB,Dドライブが27.4GB,Eには436GBの空きがある.⇒パッケージは3つに分かれていて,そのうちドライブを変更できるのは一つ(製品)だけだ.キャッシュは多分インストールが終了すれば廃棄されるはずだが,SDKなどはCにインストールされる.

さて,そろそろ始めることにしよう

さて,そろそろ始めることにしよう.しかし,その前にまず「アリアドネの糸巻き」の最新バージョンを確定しなくてはならない.WinMergeをダウンロードしてインストールした.開発支援と研究履歴に単体で置いてあるものが一致.これが最新と言ってよいだろう.ソースコードは確保したが,開発環境がどうなっていたのか?タスクバーにゼルコバの木アイコンがあったので,起動してみたが,エラー終了してしまう.

image

とりあえず,アイコンを外しておこう.糸巻きアイコンはすでにタスクバー上にある.名前は準同型検定となっている.おそらくこれは最終版と思われるが...「準同型検定」という名前でよいのだろうか?

image

少し,これを使って遊んでみた方がよさそうだ.というか,その前にプロジェクトを立ち上げてビルドできることを確認する必要がある.タスクバー上にWish Applicationというアイコンがあるが,これはなんだろう?どうも,これはGitと同梱でインストールされたもののようだ.これはレンダリング用ツールという位置付けのようだが...使った覚えがない.Tcl/Tkに関係するというのだが...おそらく,Gitにアクセスするときに必要になるものなのだろう.アイコンをクリックするとシェルのようなものが立ち上がってくる.タスクバーにはこの他にも開発者用コマンドプロンプト,VS2022用コマンドプロンプト用ネイティブツールというのも入っている.全部捨ててもいいような気もするが,もう少し様子を見てから決めることにしよう.

タスクバーにはVS2017とVS Codeしか入っていない.C#はVS Codeで開発していた可能性はあるが… バージョンはVS 2022だったはずだ.VS2022はインストールされている.VSD2019も入っている.ただし,パッケージだけでEXE本体は入っていないかも… VS Code でC#を開発するというのはありのようだ.2022というのは最新バージョンのようだ.VS 2026 というのもプレリリースされているようだが...プロジェクトを開こうとした下記のパネルが出てきた.

image

ツールセットのアップグレードというのも面倒なのでパスしておこう.GitHub Copilot FREE というのの売り込みも入ってきた.1ヶ月当たり,2000コード,50件のチャットが無料という話だが...とりあえず,これもパス.ビルドはできたが,走らない.

image

アリアドネの糸巻きの下に3つプロジェクトが入っている.①Ariadne100,②ElsieComeBack,③ElsieProjectだ.ElsieComeBackというのが最下層になっているようだ.VS2017を立ち上げたら,ライセンスの更新を要求された.パスワードが通ったので,ライセンスの更新もできた.今度はビルドしないでいきなり実行してみたが,エラーになる.なぜだろう?Debugフォルダーに入っているEXEは黙って実行できる.リリース版も同様だ.ここには,2023年に作ったElsieComeBack.dllが入っている.どうも,何もかもすっかり忘れてしまった.ゼルコバの木ならもう少しなんとかなるだろうか?

ZELKOVA 2022にはパッケージが入っているが,ZELKOVA 2023は空っぽだ.フォルダだけ作って使わなかったのだろうか?2024/06/20に「サビ落とししてゼルコバの木を動かす」という記事がある.どうも2023年頃はほとんどゼルコバの木をいじっていなかったようだ.このときもリビルドでエラーが出て,「ソリューションの再ターゲット」で切り抜けている.どうも,この操作が必須になっているようだ.

アリアドネの糸巻きの開発再開

少し,研究開発の流れを追ってみよう.2023/10/10に「戻ってくるアリアドネのために部屋を整える」という記事がある.ここには,「グラフの隣接行列から距離行列を生成する「ワーシャル・フロイド法」というアルゴリズムがあり,これをハミルトン閉路問題に応用するという課題」というコメントが挟まっている.その関係で「アリアドネ」ということになったのだろう.その他に,NarcissusとELSIEの名前が出てくる.ELSIEはNarcissusを含んでいるとある.アリアドネは元々VBではなく,C++で開発されていたようだ.boostというのはライブラリのようだ.この時期のターゲットは「準同型検定」だと思う.つまり,群論用のツール開発だ.実際には,「部分群の列挙」というテーマだ.

10月21日アリアドネの糸巻きアイコンが登場する..vsをCドライブに置いているのだが,まだ活きているだろうか?このファイルは1本で2GBもある.素群とか,極大部分群など,非標準用語があちこち出てくる.正規部分群検定,共役変換検定というのも入っている.可換/非可換の判定,結合法則の検査というのも実装されている.写像というクラスも使えるようになっている.素数判定は喜内からもって来ている.喜内には複数の素数判定が実装されているようだが.シンプルなものを採用した.乗積表も出せるようになっている.これも喜内から取り出したものだ.喜内をそっくりC#に移行するという話もあるのだが...

一応s5くらい(120X120)までなら出せるという話になっている.11月16日に来訪者カウントが16万を超えたという記録があるが,現在は54万を超えている.「極大部分群検定は原理的に破綻している」という記事が出てきた.「クリーク分割問題が解ければ極大部分群検定は解ける」という記述がある.これは「フロック」に関係するものだ.

「群には溶接された硬結な結節点が2種存在する.一つは逆数関係による固着,もう一つは自乗巡回路である.これらは一つの点を除去するとすべての点を除去するしかなくなるので,1個のブロックを形成している.ブロックを点に簡約したグラフを簡約群グラフ,ブロックを簡約した点をフロックと呼ぶ.群の元集合をフロック類に分割できる.」

12月に入ると,志向がネット上の活動に傾いてくる.12月9日にナムの三角形をGeogebraで書いた辺りがその嚆矢に当たる.どうもこの辺りでプログラミングとは完全に切れてしまっているように思われる.いや,1月には喜内のコードをいじっている.「超冪剰余計算」というのを組み込もうとしていたようだ.2月に入るとJuliaなども登場し,すべて数学関係に向かっているようだ.この後は,ゼルコバの木を思い出したように動かしているが,その他は来訪者カウントの記録更新くらいのことしか出てこない.つまり,2023年11月でアリアドネの糸巻きの開発は停止したことになる.

ファイルの整理をもう少し続けよう

ファイルの整理をもう少し続けよう.バックアップは主に次の3つの方法で行う.①IODATA(USB)→日常的なバックアップ,②外付けHD→長期的なバックアップ,③開発機(Eドライブ)→一時中断中のプロジェクト.IODATAは持ち出し用で,頻繁に更新されるから,あまり溜め込まないよう整理しておく.中長期的なものは②長期保存ディスクに移動する.しかし,それにしてもIODATAは遅い...ThunderBirdのバックアップでアクセスできないファイル(DB)がかなりある...

コラッツ木をやっていたのは2022年頃だが,この年は5月から12月の間でブランクがある.「コラッツ完全木」というのは,「完全正則木」という意味のようだ(ただし,終端ノードでは正則にはならない).コラッツ長子木というのは「コラッツ仮想木」とも呼ばれるもので,兄弟ノードを長子ノード1点に集約したもののようだ.下図左は仮想木,右が完全木.仮想木は完全正則になっている.

image  image

コラッツ木生成ツールではCSVファイルを読むことができるが,ZEL形式CSVというのがあるようだ.「長子ノード」はときに「コラッツ数」と呼ばれることもある.「コラッツ放射高速道路系」という概念.「木」は通常「ルートノード」を根とする樹状の図形として描画されるが,ルートを中心とする放射線路系として描画されてもよい.

この意味ではコラッツ木とは1/5を始点として放射線状に投射される交差しない数直線の集合とみなすことができる.銀河高速道路系では一般コラッツ木を一般道路として位置付け,それと並行する幹線路として仮想コラッツ木を対置している.

「完全正則コラッツ木を構成するためのもう一つの方法」≡「3の倍数ノードを一律除去する」.この方法の利点は「3よりも大きい素数が必ず含まれる」という点だ.「3の倍数ノードを除去したコラッツ木には一般道路と高速路という区別は存在しない」ため,「コラッツ銀河高速銀河系」というイメージは放棄され,「仮想木」という概念も破棄される.ここで「コラッツ放射線道路系」というイメージが浮上してくる.このイメージは上記の「コラッツ放射高速路系」に類似しているが,同じではない.2TBの外付けHDDをこの時期に購入している.

コラッツ木ではマニュアル制作しているので,これを読めば大概のことはわかる.大体状況は把握できたので,コラッツに関してはここまでとしておこう.さていよいよアリアドネの糸巻きだ.このプロジェクトは2023年9月頃から始まる.

いきなり,「C#の2次元配列をC++に変換する」という話が出てきた.今回の実装では配列が重要なので自在に使えるようになっている必要がある.C++にはarrayとvectorがある.arrayはサイズ固定,vectorは可変長という違いがある.問題は配列のセルにオブジェクトを格納できるか?という点だ.つまり,arrayのにvectorを代入できるか?それができれば今回のタスクはほぼ完了したのも同じだ.

Elsieという名前が出てきた.Elisietといのは行列の同型判定ツールのようだ.ISOMORPHというクラス名が出てくる.これはシステムというか,C#のクラスではないかと思う.つまり,同型判定に関しては既存コードが使えているようだ.どうも結構ややこしいことをやっているようだ.マルチスタートアップという機能を使ってC#アプリとC++アプリを同時並列実行させるというようなことをやっている.このアプリはVS 2022で開発している.

ラッパークラスというのを覚えているだろうか?boostという名前が出てくるのだが,これは何だろう?生ポインタのピン留めという話もある.「自己同型検定」という機能が実装されている.これは今回のタスクに近いのではないか?A4の自己同型検定で24個の同型写像が出力されたとある.いや,それでもようやく半分までということのようだ.S4くらいまでならなんとかなってもS5ではほぼ不可能としている.

ファイルの整理は大体ついた

ファイルの整理は大体ついたのではないかと思う.開発機のEドライブは800GB以上の大きなもので,空き領域は470GB,開発用のDドライブも100GB中28GBの空き領域がある.これだけあると,ほとんど外付けHDは不要だ.外付けはノートにつないだままでよいのでは?開発環境が散らばってきたので,言語ごとにプロジェクトを分けるようにした.C#, C++, VB, Python, Julia, Maxima, GeoGebra の7種がある.VBはそろそろサポート終了という話があるので,他の言語への移行も考えなくてはならない.

VBには久留島喜内の道具箱がある.Collatz Tree Generator もVBで書いているはずだが,ソースが見当たらない.マニュアルとEXEは何重にもバックアップされているが...開発環境に残っていないというのが不審な点だ.アップロードでエラーが起きた.

image

どうもいまいち安定しないところがある.USBメモリに残っていた.多分これが最終バージョンのはずだ.だいぶ前のことなので忘れてしまっているが,どうも3つバージョンがあるらしい.CollatzComplete, CollatzCoreTree, CollatzMilkywyaの3本立てだ.最終リリースしているEXEは1本になっているはずだが...日付はすべて,2022/03/27 になっている.2022年4月頃には,プロジェクトを3本立てている.①コラッツ完全木検定,②コラッツ銀河高速道路系,③コラッツ長子木検定.この辺りは,ログを読み直さないと分からない...

2023年の8月に準同型検定というのが入ってきて,9月にはプロジェクトをVBからC#へ移行し,10月に準同型検定CS+というのを残している.多分これをアリアドネ(ハミルトン閉路検定)に組み込んだものがアリアドネの糸巻きではないかと思う.アリアドネというフォルダには,オリジナルのAriadne100も入っている.このプロジェクトには Ariadne100.pdb, ElsieComeBack.pdb, ElsieProject.pde という3つのPDBファイルが含まれている.メインは準同型検定CS.exe のようだ.この辺りもログを読み直さないとさっぱり分からない...

開発環境に戻ろう

一度は死んだと思っていたサブノートが復活した.読めなくなったSSDは大急ぎでHDにバックアップした.古いSSDがあったので,これもバックアップした.どちらも256GBだ.ネットにはbluetoothでスマホからテザリングできるようになった.開発機の連携はまだうまく行っていないが,キーボードをサブに移し,マウスも独立につなげたのでなんとかなる状態にはなっている.開発環境を整えようという動機は,ゼルコバの木に戻るためではなく,数学上のツールを開発するためだ.落ち着いて作業できる環境を整える必要がある.そのためには,まず開発機上のファイルの整理からやらなくてはならない.

画面設定を「ハイコントラスト」に切り替えてみた.確かにこの方がずっと楽だ.ただし,勝手が違うので慣れるまで時間が掛かるかもしれない.背景が黒で文字は白抜きだ.

image

読者のブラウザでは白黒は反転しないので,画像の編集などではまごつくかもしれない.このマウスはリールを使えないというのが泣き所だ.リールは使い慣れるとなしでは済まなくなる.いちいちスクロールバーを動かさなくてもよいし,ズームも簡単にできる.いや,まだ捨ててなかった.まとめて廃棄するつもりだったが,いま使っているの以外はすべてリール付きだ.急いで捨てないでよかった...これで一つ問題が片付いた.マウス一つ買うにも相当な出費になるので...

さて,開発環境に移る前にサブノートの側を整備しておこう.デスクトップ上に何も残っていないが,これでよいのだろうか?というか,ゴミ箱が消えている.この辺りがトラブルの開始点になっていたような気がするが...⇒出たきた.デスクトップ上で右クリック→表示→デスクトップアイコンの表示で表示できた.ゴミ箱も復元された.どうも,やっぱり黒白では疲れる.白黒の方が見易いというより,気分的に楽だ.白黒ではどうしても「見慣れない画面」という感じになってしまう.

サブノートはある程度整理が付いた.開発機との接続はGLO4Pに切り替えれば動作する.ただし,Wifiにつなぐとbluetoothが切れてしまう.これを戻すのに多少手間が掛かるが仕方ないだろう.

いよいよスマホがくたばってしまった

バッテリーがぼっこり膨らんでしまっているのはともかく,丸一日持たないようになってしばらく経つが,どうもいよいよ終わりという感じになってきた.電源を落として充電すれば2,3時間で回復はするようだが...最後の手段としてバックアップのASUSを引張り出してみた.テザリングはパスワードが分からないので使用できなかったが,USBでテザリングは可能になった.こちらではパスワードなしでアクセスできるようになった.

ただし,いろいろと問題はある.USBテザリングとWIFIは併用できるので,二台でMouseWithoutBordersを使うことはできるが,ネットアクセスを共有できないため,どちらかのマシンしかネットに繋がらない.とりあえず,サブノートでネットアクセスすることにしたが,今度はFacebookやGoogleにログインできないという問題が出てきた.SIMを差し替えているだけなので,二段階認証用のデバイスが使えない状態になっている.かなり面倒な話になってきた.認証用デバイスを複数登録できるかどうかが問題だが,ともかく一度スマホを戻して調整しなくてはならない.

しかし,まぁともかくなんとかネットアクセスだけは確保できた.いや,ちょっと勘違いしていたかもしれない.SIMを差し替えているのだから,電話番号でアクセスできたはずだ.確かに,電話番号の末尾4桁が表示されていたので,通知を受け取ることはできたのではないか?実際,それ以外の方法ではデバイスの切り替えはできない.開発機には「モバイルホットスポット」というのがある.インターネット接続の共有ができるというのだが...いまは,元のスマホに戻しているが,バッテリが上がってしまうのをなんとか調整すればもうしばらくは使えるかもしれない...「モバイルホットスポット」が使えれば,認証はPCの側でも受けられる...

面倒なのはSIMの抜き差しだ.HUAWEIの方はケースの外からピンで取り出せるが,ASUSはケースをこじ開けなくてはならない.ASUSが安定に使えればやや性能は落ちるがしばらくは手放しで使えるのではないかと思うのだが...