首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >在多维数学中证明P=NP问题

在多维数学中证明P=NP问题

原创
作者头像
Zeusro
修改2025-06-27 15:58:34
修改2025-06-27 15:58:34
1730
举报

多维数学假说证明过程

传统立体直角坐标系

代码语言:txt
复制
1:n'= 0
2:t = 0
3:1 = 1 && 0 = 0 && x=x && y=y && z=z

对常数时间t求导得到0。

传统立体直角坐标系是t=0的特殊状态。

这种前提下,P=NP问题不可解。

基于时间作为第一维度的多维宇宙

代码语言:txt
复制
1:t≠0
2:1=n ⇔ n=1
3:P=P ⇔ P=NP

时间不为0时,表示千变万化的多维宇宙。

在多维宇宙中 P=NP 问题可以简化为 P=P的问题,将所有的非线性规划,转换为基于n维线段的线性规划,因此问题可解。

贪婪搜索是P=NP问题的近似最优解

us
us

源代码

贪婪搜索的源代码

```go

package v2

import (

"math"

"github.com/zeusro/system/function/local"

v1 "github.com/zeusro/system/problems/np/model/v1"

)

type Salesman struct {

TodoCity map[string]v1.City // 计划旅行的所有城市列表

Plan []v1.City // 实际执行的旅行计划,是一个环形队列,这里简单用数组表示

KURO float64 // KURO是日本动画《K》里面的一个角色,这里用来表示旅行的总距离,是一种浪漫主义表达手法

Truth bool //问题是否可解

}

func NewSalesman(cities []v1.City) *Salesman {

if len(cities) < 2 {

panic("至少需要两个城市才能进行旅行")

}

s := &Salesman{

TodoCity: make(map[string]v1.City),

}

// 拿到"地图",获取USA所有城市背景之后,直接map化

// 初始化旅行城市列表

for _, c := range cities {

s.TodoCity[c.Name] = c

}

s.Plan = make([]v1.City, len(cities)+1) // 预分配空间,+1是为了回到起点城市

return s

}

// Travel 踏上寻找n的旅程

func (s *Salesman) TravelN(cityName string, n int) {

// 上一次的目的地是这一次的起点城市。0比较特殊,代表出发城市。

// 起点城市不在旅行计划中

current := s.TodoCity[cityName]

if n >= 1 {

s.Plan[n] = current

}

delete(s.TodoCity, cityName) //由于计划是单线程,不用考虑线程安全

//边界的判断条件是剩余旅行城市=0

if n == 0 {

s.Plan[0] = s.Plan[len(s.Plan)-1] // 确保最后一个城市是起点城市

return

}

var nextCity v1.City

minDistance := math.MaxFloat64

for _, city := range s.TodoCity {

distance := local.Haversine(city.Latitude, city.Longitude, current.Latitude, current.Longitude)

if distance < minDistance {

minDistance = distance

nextCity = city

}

}

s.Plan[n].Distance = minDistance

s.KURO += minDistance // 累加距离

s.TravelN(nextCity.Name, len(s.TodoCity)) // 递归调用

}

func (s *Salesman) GetK() float64 {

if s.IsSolvable(s.Plan) {

return s.KURO

}

return 0

}

func (s *Salesman) IsSolvable(city []v1.City) bool {

if len(s.TodoCity) == 0 && len(s.Plan) == (len(city)+1) {

s.Truth = true

}

return s.Truth

}

```

n < n+1 → P≠NP

按照多维数学假说的基本论述,P=NP在当前的数学符号系统里面是不可解的。

所以,贪婪搜索只能成为近似最优解,之所以近似,第一点在于解法不完全(用球面公式模拟),距离的计算没有完全贴合原意(时间)。

第二点是博弈论的一种理念:“局部最优解不是全局最优解”。

贪婪搜索算法的基本策略是:

“从当前节点出发,每次选择边权最小(或收益最大)的那个相邻节点,作为下一步。”

反驳的论述是

局部最优 ≠ 全局最优。用图论解释,贪婪算法每一步只看当前局部的边权大小,但这种局部最优选择,可能在后面导致走到代价更高的路径,错过了更优的全局路径。

对于“局部最优解不是最优解”的论述,我要进行反驳

不存在全局最优解

证明过程:

完整数学论述见 拓展博弈论

局部最优解:对某个参与者来说,在当前其他人的策略不变的前提下,他无法通过改变自己的策略而获得更好结果。即:纳什均衡的定义。

全局最优解:从所有参与者整体角度来看,能够达到总效用最大、或集体最优的策略组合,通常是帕累托最优解、社会最优或合作博弈的解。

对于这种概念。我觉得是“缺斤少两”的。从历史的角度上看,不存在放之四海而皆准的永恒真理。任何论述都需要在满足某种前提之下才能成立。也就是说不存在所谓的“全局最优解”。

根据n维数学假说(https://gitee.com/Zeusro/math ),3维世界在5维世界里面。从txyz(传统四维)上看,三维世界只是一个点。

在立体直角坐标系中,物体水平移动的通常定性为X轴。但在我看来X轴是时间t才对。n之上,还有n+1维。因此无法避n+1维的干涉。

举个例子,1和T在下象棋。旁边一只猫冲过来,把T的元帅叼走了。

这样,无论1和T采取什么策略都没有意义了。因为要先把猫找回来。

在我看来,局部最优解和全局最优解是相对存在的。

对于任何局中人(player)而言,由于能力有限,考虑的维度永远只能无限逼近“现实”。自以为的“全局最优解”只能是“局部最优解”。这也有点像大卫·休谟(David Hume)的观念,理性推理只是一种感觉

结论

代码语言:TXT
复制
踏上旅程,寻找真我 / Travel and find real me

通过历练,明心见性 / Pass the test and then see the truth

このふざけたルールにだって

那些未能置我於死地的苦難,只會讓我變得強大

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 多维数学假说证明过程
    • 传统立体直角坐标系
    • 基于时间作为第一维度的多维宇宙
  • 贪婪搜索是P=NP问题的近似最优解
  • 不存在全局最优解
  • 结论
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档