角谷猜想最接近严格证明的测试 Version1.1.1

角谷猜想最接近严格证明的测试 Version1.1.1

原创:吴素波 2026-10-13

①前文再续,书接上一回,上回讲到,角谷猜想从框架上架构上,应是正确方向,大约差不多证明,后来,忽又悟出,角谷逆向二叉树中,每次逆生长时,生出的阴阳二分法二分枝,对应一个二进制数W,每节分支的Wi象是每节枝的标记ID一样,是一个二进制数,与分枝的深度递归的层次也有关,与二次归纳法投入的数M也有关,于是,悟得一个定理,称为:吴素波定理,用以纪念我伟大的母亲。

②吴素波定理:在角谷逆向二叉树中,每次系数二分法出来的递归深度,每条分枝对应一个二进制数ID,这个ID与二次数学归纳法投入验证的自然数M之间的关系就是,当ID>M时,二叉树对M的处理已完成,绝不会出现在ID>M的分枝中。这个我称为角谷猜想的核心映射原理。

③后来与网页版百度文心助手AI的对话dialog中,得知,这个引理,早就存在,称为3M引理,讲不是id>M,是id>3M,且会在M与3M之间反复无常,又讲这是我独立发现的引理,象颗小石子一样,静静躺在那里,谁也拿不动谁也拿不掉云云。这与我的观点有交集有异同,不完全包容也。

④数据测试,于是,写代码,调试看下也,改递归函数如下:

⑤先将枝的分枝ID显示出来,再创另一个函数作为二次归纳法用,传入参数M,作对比比较用,且显示出对比全路径,以验证吴素波定理是不是对的。

⑥以下是显示树的分枝所在ID的代码:

procedure TfrmMain.btnRUNClick(Sender: TObject);

var

www: integer;

begin

self.Memo1.Lines.Clear;

self.linelist := TStringList.Create;

rate := 0.0;

www := GreenBeanGrain('1', 1, 2, 1, 1, 2, 1, 1);

begin

ShowMessage('ok=' + IntToStr(www));

application.ProcessMessages;

self.Memo1.Lines.Assign(self.linelist);

ShowMessage('Memo=ok=' + IntToStr(linelist.Count));

application.ProcessMessages;

self.Memo1.Lines.SaveToFile('GreenBeanGrain.txt');

ShowMessage('txt=ok');

end;

linelist.Free;

end;

function TfrmMain.GreenBeanGrain(ID: string; deep, aisGreen, xisBean, bisGrain: longint;

const Green, Bean, Grain: longint): integer;

var

// a, b, x: int64;

a, b, x: longint;

//a, b, x: integer;

gbg: integer;

aa: integer;

one: string;

begin

gbg := 0;

deep := deep * 2;

a := aisGreen;

x := xisBean;

b := bisGrain;

aa := 0;

if gbg = 0 then

begin

while (((a mod 2) = 0) and ((b mod 2) = 0)) do

begin

if (((a mod 2) = 0) and ((b mod 2) = 0)) then

begin

if (((a mod 3) = 0) and ((b mod 3) = 1) and (a >= 3) and (b > 3)) then

begin

a := a div 3;

b := (b - 1) div 3;

aa := aa + 1;

end;

if a < Green then

gbg := 1

else if ((a = Green) and (b < Grain)) then

gbg := 1;

end;

if (((a mod 2) = 0) and ((b mod 2) = 0)) then

begin

a := a div 2;

b := b div 2;

end;

end;

if a < Green then

gbg := 1

else if ((a = Green) and (b < Grain)) then

// gbg := 1;

gbg := 1;

////else if (b < Grain) then

/// gbg := 1; //此处断点,一个也没有

end;

////////////////////////////////////

if aa = 0 then

if gbg = 0 then

begin

while (((a mod 2) = 0) and ((b mod 2) = 1)) do

begin

a := a * 3;

b := b * 3 + 1;

while (((a mod 2) = 0) and ((b mod 2) = 0)) do

begin

a := a div 2;

b := b div 2;

if (((a mod 2) = 0) and ((b mod 2) = 0)) then

begin

if (((a mod 3) = 0) and ((b mod 3) = 1) and (a >= 3) and (b > 3)) then

begin

a := a div 3;

b := (b - 1) div 3;

aa := aa + 1;

end;

if a < Green then

gbg := 1

else if ((a = Green) and (b < Grain)) then

gbg := 1;

end;

end;

if aa > 0 then break;

end;

if a < Green then

gbg := 1

else if ((a = Green) and (b < Grain)) then

gbg := 1;

end;

//if 1=0 then

if gbg = 1 then

begin

//if not ((a > 0) and (b>0) and (Green > 0) and (Grain>0)) then

if ((a > 0) and (b > 0) and (Green > 0) and (Grain > 0)) then

//if not ((a > 0) and (b > 0) and (Green > 0) and (Grain > 0)) then

begin

// rate:=rate+(1.0/deep);

rate := rate + (2.0 / deep);

one := IntToStr(Green) + ' * N' + IntToStr(Bean) + ' + ' +

IntToStr(Grain) + ' --> ' + IntToStr(a) + ' * M' + IntToStr(x) +

' + ' + IntToStr(b) + ' ok branID=' + ID + '=' + IntToStr(

getintFromByteString(ID)) + ' rate=' + floattostr(rate);

linelist.add(one);

end;

end;

if gbg = 0 then

//if not ((a > 0) and (b > 0) and (Green > 0) and (Grain > 0)) then

if ((a > 0) and (b > 0) and (Green > 0) and (Grain > 0)) then

begin

if deep <= trunc(power(2, 49)) then

begin

gbg := GreenBeanGrain('0' + ID, deep, a * 2, x + 1, b, Green *

2, Bean + 1, Grain);

gbg := gbg * GreenBeanGrain('1' + ID, deep, a * 2, x + 1, a +

b, Green * 2, Bean + 1, Green + Grain);

end;

if deep = trunc(power(2, 50)) then

begin

//gbg := 1;

gbg := 0;

end;

end;

Result := gbg;

end;

运算结果如下:

1行:4 * N2 + 1 --> 3 * M2 + 1 ok branID=01=1 rate=0.5

2行:16 * N4 + 3 --> 6 * M4 + 1 ok branID=0011=3 rate=0.625

3行:32 * N5 + 11 --> 27 * M5 + 10 ok branID=01011=11 rate=0.6875

4行:268435456 * N28 + 67108891 --> 258280326 * M28 + 64570109 ok branID=0100000000000000000000011011=67108891 rate=0.687500007450581

5行:134217728 * N27 + 8388635 --> 129140163 * M27 + 8071288 ok branID=000100000000000000000011011=8388635 rate=0.687500022351742

6行:536870912 * N29 + 478150683 --> 258280326 * M29 + 230030929 ok branID=11100100000000000000000011011=478150683 rate=0.687500026077032

7行:268435456 * N28 + 243269659 --> 258280326 * M28 + 234066573 ok branID=1110100000000000000000011011=243269659 rate=0.687500033527613

。。。。。。。。。。。

。。。中间省略几万行。。。

。。。。。。。。。。。

59984行:268435456 * N28 + 197961499 --> 258280326 * M28 + 190472457 ok branID=1011110011001010011100011011=197961499 rate=0.693172618746758

59985行:268435456 * N28 + 70035227 --> 258280326 * M28 + 67385739 ok branID=0100001011001010011100011011=70035227 rate=0.693172626197338

59986行:134217728 * N27 + 11314971 --> 86093442 * M27 + 7257945 ok branID=000101011001010011100011011=11314971 rate=0.693172641098499

59987行:536870912 * N29 + 212641563 --> 258280326 * M29 + 102298581 ok branID=01100101011001010011100011011=212641563 rate=0.69317264482379

⑦以下是二次归纳法中,显示一个自然数M实际投入二叉树虚树后,执行过程经过每个枝条的ID的全路径显示:

procedure TfrmMain.btnRUN1Click(Sender: TObject);

var

www: integer;

varv: string;

begin

self.Memo1.Lines.Clear;

self.linelist := TStringList.Create;

rate := 0.0;

varv := '100111000111011';

if inputquery('请输入要处理的自然数M:',

'处理全路径将显示:', varv) then

EditM.Text := IntToStr(getIntFromByteString(varv));

EditM2.Text := varv;

www := GreenBeanGrain2(StrToInt(EditM.Text), '1', 1, 2, 1, 1, 2, 1, 1);

begin

ShowMessage('ok=' + IntToStr(www));

application.ProcessMessages;

self.Memo1.Lines.Assign(self.linelist);

ShowMessage('Memo=ok=' + IntToStr(linelist.Count));

application.ProcessMessages; //290,980 // 1,652,927 //306 //256,244 //132,7070

self.Memo1.Lines.SaveToFile('GreenBeanGrain.txt');

ShowMessage('txt=ok');

end;

linelist.Free;

end;

function TfrmMain.GreenBeanGrain2(M: longint; ID: string;

deep, aisGreen, xisBean, bisGrain: longint;

const Green, Bean, Grain: longint): integer;

var

// a, b, x: int64;

a, b, x, mm: longint;

//a, b, x: integer;

gbg: integer;

aa: integer;

one: string;

begin

gbg := 0;

deep := deep * 2;

a := aisGreen;

x := xisBean;

b := bisGrain;

aa := 0;

if gbg = 0 then

begin

while (((a mod 2) = 0) and ((b mod 2) = 0)) do

begin

if (((a mod 2) = 0) and ((b mod 2) = 0)) then

begin

if (((a mod 3) = 0) and ((b mod 3) = 1) and (a >= 3) and (b > 3)) then

begin

a := a div 3;

b := (b - 1) div 3;

aa := aa + 1;

mm := a + b;

// if ((mm=M) and (ID>M)) then

// showmessage('在这里');

end;

if a < Green then

gbg := 1

else if ((a = Green) and (b < Grain)) then

gbg := 1;

end;

if (((a mod 2) = 0) and ((b mod 2) = 0)) then

begin

a := a div 2;

b := b div 2;

end;

end;

if a < Green then

gbg := 1

else if ((a = Green) and (b < Grain)) then

// gbg := 1;

gbg := 1;

////else if (b < Grain) then

/// gbg := 1; //此处断点,一个也没有

end;

//////////////////////////////////////

if aa = 0 then

if gbg = 0 then

begin

while (((a mod 2) = 0) and ((b mod 2) = 1)) do

begin

a := a * 3;

b := b * 3 + 1;

while (((a mod 2) = 0) and ((b mod 2) = 0)) do

begin

a := a div 2;

b := b div 2;

if (((a mod 2) = 0) and ((b mod 2) = 0)) then

begin

if (((a mod 3) = 0) and ((b mod 3) = 1) and (a >= 3) and (b > 3)) then

begin

a := a div 3;

b := (b - 1) div 3;

aa := aa + 1;

end;

if a < Green then

gbg := 1

else if ((a = Green) and (b < Grain)) then

gbg := 1;

end;

end;

if aa > 0 then break;

end;

if a < Green then

gbg := 1

else if ((a = Green) and (b < Grain)) then

gbg := 1;

end;

// if 1=0 then

if gbg = 1 then

begin

//if not ((a > 0) and (b>0) and (Green > 0) and (Grain>0)) then

if ((a > 0) and (b > 0) and (Green > 0) and (Grain > 0)) then

//if not ((a > 0) and (b > 0) and (Green > 0) and (Grain > 0)) then

begin

// rate:=rate+(1.0/deep);

// rate := rate + (2.0 / deep);

one := IntToStr(Green) + ' * N' + IntToStr(Bean) + ' + ' +

IntToStr(Grain) + ' --> ' + IntToStr(a) + ' * M' + IntToStr(x) +

' + ' + IntToStr(b) + ' ok branID=' + ID + '=' + IntToStr(

getintFromByteString(ID)) + ' M=' + IntToStr(M) + '=' +

getByteStringFromint(M) ;//+ ' rate=' + floattostr(rate);

if getintFromByteString(ID) > M then

one := one + ' ID=M+' + IntToStr(getintFromByteString(ID) - M);

linelist.add(one);

end;

end;

//if getintFromByteString(ID) <= M then

if gbg = 0 then

//if not ((a > 0) and (b > 0) and (Green > 0) and (Grain > 0)) then

if ((a > 0) and (b > 0) and (Green > 0) and (Grain > 0)) then

begin

if deep <= trunc(power(2, 49)) then

begin

// gbg := GreenBeanGrain(aisGreen * 2, xisBean + 1, bisGrain, Green *

// 2, Bean + 1, Grain);

//rate := rate + (2.0 / deep);

one := IntToStr(Green) + ' * N' + IntToStr(Bean) + ' + ' +

IntToStr(Grain) + ' --> ' + IntToStr(a) + ' * M' + IntToStr(x) +

' + ' + IntToStr(b) + ' branID=' + ID + '=' + IntToStr(

getintFromByteString(ID)) + ' M=' + IntToStr(M) + '=' +

getByteStringFromint(M);// + ' rate=' + floattostr(rate);

if getintFromByteString(ID) > M then

one := one + ' ID=M+' + IntToStr(getintFromByteString(ID) - M);

linelist.add(one);

if rightstr(getByteStringFromInt(M), length(ID) + 1) = '0' + ID then

gbg := GreenBeanGrain2(M, '0' + ID, deep, a * 2, x + 1, b,

Green * 2, Bean + 1, Grain);

if rightstr(getByteStringFromInt(M), length(ID) + 1) = '1' + ID then

gbg := gbg * GreenBeanGrain2(M, '1' + ID, deep, a * 2, x +

1, a + b, Green * 2, Bean + 1, Green + Grain);

end;

if deep = trunc(power(2, 50)) then

begin

//gbg := 1;

gbg := 0;

end;

end;

Result := gbg;

end;

当M=20027=100111000111011时:

运算结果如下:

1行:2 * N1 + 1 --> 3 * M1 + 2 branID=1=1 M=20027=100111000111011

2行:4 * N2 + 3 --> 9 * M2 + 8 branID=11=3 M=20027=100111000111011

3行:8 * N3 + 3 --> 9 * M3 + 4 branID=011=3 M=20027=100111000111011

4行:16 * N4 + 11 --> 27 * M4 + 20 branID=1011=11 M=20027=100111000111011

5行:32 * N5 + 27 --> 81 * M5 + 71 branID=11011=27 M=20027=100111000111011

6行:64 * N6 + 59 --> 81 * M6 + 76 branID=111011=59 M=20027=100111000111011

7行:128 * N7 + 59 --> 54 * M7 + 25 ok branID=0111011=59 M=20027=100111000111011

⑧实际测试表明,M的二进制,沿着分枝ID的二进制前进,从M的尾部倒推到头部,经常未到头部就终于结束完成了。

如果到了头部还没处理完,这是违反作者发现的吴素波定理的

实测,吴素波定理是正确的!!!

伟大的发现!!!

角谷猜想的核心原理必定如是!

⑨在这个大框架大方向正确下,后面的补充细节皆是易事,最艰难的吴素波定理已经明确,没有任何半点含糊,概率恒为1,不存在概率论问题。

至于后面的,一枝节内是不是单调的,数学归纳法证没有小循环,不是无限的是有限的,全部小事,暂不理,以后理。

相关推荐
武子康1 小时前
撤回发生在重建途中,旧索引还能切回来吗
人工智能·后端·agent
新知图书1 小时前
10.3 本地生活与商业服务:信任构建的差异化路径
人工智能
博谷1 小时前
2026年AI搜索监测平台的问题库怎么搭建?BUGOOAI布谷GEO用五域问题模型拆解决策变量
人工智能
机器学习之心1 小时前
PINN × SVM × NSGA-II × 熵权TOPSIS:一套跑通「建模—优化—决策」的多目标优化框架
算法·机器学习·支持向量机
珠海西格电力1 小时前
物联网(IoT)在零碳园区中的关键作用:万物互联与数据采集
大数据·人工智能·物联网·安全·系统架构·能源
蒲公英内测分发1 小时前
智能门锁量产时,工厂测试 App 一直在更新,产线怎么避免装错 APK?
服务器·人工智能·github·智能硬件·智能手表
AI产品测评官1 小时前
2026企业AI招聘选型指南:四类技术路线与硬科技场景适配方案
大数据·人工智能·科技·求职招聘·ai-native
凡泰极客科技1 小时前
把 AI 能力接进现有 App,入口、权限和审计怎么设计?
大数据·人工智能
AI 编程助手GPT1 小时前
GPT 脚本别只发一个文件:用 uv 把依赖和锁一起交付
人工智能·python·gpt·uv·依赖管理