1:n'= 0
2:t = 0
3:1 = 1 && 0 = 0 && x=x && y=y && z=z
对常数时间t求导得到0。
传统立体直角坐标系是t=0的特殊状态。
这种前提下,P=NP问题不可解。
1:t≠0
2:1=n ⇔ n=1
3:P=P ⇔ P=NP
时间不为0时,表示千变万化的多维宇宙。
在多维宇宙中 P=NP 问题可以简化为 P=P的问题,将所有的非线性规划,转换为基于n维线段的线性规划,因此问题可解。
贪婪搜索的源代码
```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)的观念,理性推理只是一种感觉。
踏上旅程,寻找真我 / Travel and find real me
通过历练,明心见性 / Pass the test and then see the truth
このふざけたルールにだって
那些未能置我於死地的苦難,只會讓我變得強大
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。