之前翻硬币问题胡思乱想的完善
题目背景
小明正在玩一个“翻硬币”的游戏。题目描述
桌上放着排成一排的若干硬币。我们用 * 表示正面,用 o 表示反面(是小写字母,不是零),比如可能情形是 **oo***oooo,如果同时翻转左边的两个硬币,则变为 oooo***oooo。现在小明的问题是:如果已知了初始状态和要达到的目标状态,每次只能同时翻转相邻的两个硬币,那么对特定的局面,最少要翻动多少次呢?输入格式
两行等长字符串,分别表示初始状态和要达到的目标状态,每行长度小于 10001000。数据保证一定存在至少一种方案可以从初始状态和要达到的目标状态。
输出格式
一个整数,表示最小操作步数。输入输出样例
输入 #1复制**********
o****o****
输出5
输入*o**o***o***
*o***o**o***
输出 #2复制1
在做这道题目的时候我这样评价这个解法答案的唯一性是因为——
另外,应当明确的一个事实就是我们写算法就是为了让计算机的for循环结构和while结构帮我们自动处理同一的大量的执行。还有一点就是它们必须都是满足某种规律的,然而有的题目就比如翻硬币是没有规律的(我指的是明显的使得程序直接按照最朴素的想法直接进行的),这时for和while(虽然不一定但依然是在for和while的基础上进行转化的)肯定还是要用到的。所以我们只能按部就班的直接翻硬币。这时往往是要从另外一个角度来看待这一个问题的。我们可以毫不怀疑的说就是这个直接从开头开始翻转了。因为像数学一样转化这个问题就说明它是有规律的,但是请注意到那些看可以被重写(重述)的问题是在基本的问题上进行改进的(因为这就和数学里面的“范畴论”一样,不同的问题之间之所以可以一步一步的转化就是因为它转化后的,如代数转几何是因为几何就是代数建立的基础)而算法的简化问题就是在之前的问题的认识之下(不是穷举)一一对应的结果(即使人们并未意识到),所以我们可以丝毫不怀疑的说就是要这样解决的。
但是用已有的去重构那些复杂的是很累的,所以数学中才会用那些高级的理论来解决成了那些基础数学很难解决的问题(高级理论放大了基础的一些特性,更高又在更高级的上面构造,(高级又有“自己的”特点,又可以深挖))。对应到同样是逻辑为基础的计算机里就是——高级算法和数据结构了。这样子我们就看清楚了哪些问题是值得我们去用算法和数据结构的。
然而其实可以解释得更加清楚的。
启发我的是我对格皇的不可模仿性的思考。可以说尽管我已经意识到了这一点,但是我还是不能完全说服自己。在清明假期回家的路上我反思了自己的所学和所见,了一些结果。
我在B站上面看到一个UP主,他教授的是他自己在高中数学竞赛学习过程中悟出来的“自由度”分析。我当时就觉得和格皇在《收获与播种》里面说因为知道三条边可以确定一个三角形所以就去找到了边表示面积的方法。UP主是北大数院的,他的实力在我之上但是他依然不可能做到像格洛滕迪克那样,自己发现勒贝格积分和测度论。他反而是利用高级的知识来揭示高中知识的本质(尽管自由度的刻画几乎只对线性方程有解决问题的时候看清楚道路的作用),这给了我很大的启发,这次想起我觉得虽然不能到达格的水平亦可以用苏苏的方法来学习新思想,达成自己的小目的。
在知乎上面看数学有关的帖子的时候突然刷到了希尔伯特纲领中对符号证明的推崇——也就想起来了自己学习数学的经历(对偏导数导数和向量函数导数的一些玩乐)。
从导数的数学定义进而推导出的导数运算法则。运用拉格朗日中值定理得到偏导数公式。一个思想贯彻其中。这使得我去猜测这样一个在希尔伯特纲领里称为形式化的东西。
1.导函数只能是两个元素之间的,也就是只能是自由度为1的时候微积分才存在
2.偏导数相当于是,一个变量先动,然后另外一个变量后动。转化成数学语言就是把时间的先后给拍扁成为隐藏的操作 f(x + delt x, y + delt y)- f(x,y) = f(x + delt x, y + delt y)- f(x,y + delt y) + f(x ,y + delt y) - f(x,y)(x变化和y变化)
3.无论给出任何数总是存在更小的数字使得函数接近极限
而希尔伯特纲领是这样子的
希尔伯特纲领的核心目标通常可以总结为以下三个关键点:
形式化:希尔伯特希望将整个数学体系的形式化,即将所有的数学概念和推理过程转化为精确的符号逻辑表达,并基于一套有限的、明确的公理和严密的推理规则构建数学体系。这意味着所有的数学理论都应该能在一种形式语言中得到表达。
一致性和完备性:希尔伯特计划证明数学公理系统的相容性,即确保在该系统内不可能推导出逻辑矛盾;同时他还追求完备性,即系统内每一个真实的陈述都应该能够在该系统内部通过逻辑推理得到证明。换言之,他希望建立一个既能涵盖所有真命题,又能排除一切内在矛盾的数学体系。
决定性:希尔伯特试图找到一种通用的方法或算法,对于任何给定的数学命题,都能确切地决定它在所考虑的公理系统中是否可证明。这意味着数学真理的可判定性问题,即是否存在一种机械程序,对于任何数学陈述,都能准确判断其是否为真或者能否被证明。
虽然说这个纲领最后被证明是错误的。但是需要注意到的一点是,这是专业数学家得到的结果。
这说明了
你学到的数学是完全符合希尔伯特纲领的
假设你学到的数学是不符合希尔伯特纲领的,换句话说就是会找到不能用公理体系证明的定理的话那就说明这个纲领一开始就是荒谬的,大数学家没你牛。但是这是不可能的。
事实也确实如此
1.除了哥德尔找到的sub(n,n,17)的这个自相矛盾的命题之外数学家也就只找到了其余的几个。如果你在你学到的那些不高级的数学中找到了这样的定理,那你就会留名数学史。但是这是几乎不可能的。所以,希尔伯特纲领在低级的数学领域是符合的。我们大可放心使用。
2.就算是高级的数学也可把希尔伯特纲领当作假定为真,应为反列少得可怜。找到可以留名史册。没找到可以推进自己的工作,两不输。
所以以上三个性质请大胆地去用。
由此可知我们遇到的数学领域都是可以相互转化的,就是一一对应的。各个数学领域一一对应。几何代数本质上相同。我们也没必要在这上面浪费时间了,除了偶尔转化来玩一下,熟悉一下数学,混个脸熟。
范畴论太复杂了,而且涉及到了高级的知识,我的理解可能不对了。用到希尔伯特纲领就足够解释了。
其实我原来是想要解决算法问题的——判断那些题目是穷举,那些是有存在成立的数学原理的。但是计算机里面有的问题就是纯体力活。比如计算机找素数,这就是纯体力活。应为数学家都没找到一个素数公式去表达所有的素数或者说部分无限多个素数。(欧拉、高斯、黎曼都未曾找到)当然现在也没有。也许有的知识是有规律的,但是我的数学技术还是不够深,所以暂时还是不能知道其中的奥秘(或许穷不穷举都是数学问题?毕竟几乎计算机上有成就的计算机专家都是数学家或者擅长数学的,图灵、冯诺依曼、)我留下这篇文章。希望会对以后有所帮助。
只是暂时归纳到
看似穷举但是没有穷举思路的也许是数学问题
相关文章:

之前翻硬币问题胡思乱想的完善
题目背景 小明正在玩一个“翻硬币”的游戏。 题目描述 桌上放着排成一排的若干硬币。我们用 * 表示正面,用 o 表示反面(是小写字母,不是零),比如可能情形是 **oo***oooo,如果同时翻转左边的两个硬币&#x…...

前端与后端协同:实现Excel导入导出功能
🌟 前言 欢迎来到我的技术小宇宙!🌌 这里不仅是我记录技术点滴的后花园,也是我分享学习心得和项目经验的乐园。📚 无论你是技术小白还是资深大牛,这里总有一些内容能触动你的好奇心。🔍 &#x…...

Docker:探索容器化技术,重塑云计算时代应用交付与管理
一,引言 在云计算时代,随着开发者逐步将应用迁移至云端以减轻硬件管理负担,软件配置与环境一致性问题日益凸显。Docker的横空出世,恰好为软件开发者带来了全新的解决方案,它革新了软件的打包、分发和管理方式ÿ…...

畅捷通T+ KeyInfoList.aspx SQL漏洞复现
0x01 产品简介 畅捷通 T+ 是一款灵动,智慧,时尚的基于互联网时代开发的管理软件,主要针对中小型工贸与商贸企业,尤其适合有异地多组织机构(多工厂,多仓库,多办事处,多经销商)的企业,涵盖了财务,业务,生产等领域的应用,产品应用功能包括:采购管理、库存管理、销售…...

【面经】interrupt()、interrupted()和isInterrupted()的区别与使用
📝个人主页:五敷有你 🔥系列专栏:面经 ⛺️稳中求进,晒太阳 interrupt方法 如果打断线程正在sleep,wait,join会导致被打断的线程抛出InterruptedException,并清除打断标记。如…...

了解这些技术:Flutter应用顺利登陆iOS平台的步骤与方法
引言 🚀 Flutter作为一种跨平台的移动应用程序开发框架,为开发者提供了便利,使他们能够通过单一的代码库构建出高性能、高保真度的应用程序,同时支持Android和iOS两个平台。然而,完成Flutter应用程序的开发只是第一步…...
经济学 劳动市场 医疗经济学
目录 劳动市场 医疗经济学 劳动市场 自愿交换 劳动力的供给,取决于能够胜任这个工作的人的数量,雇主提供的工资必须要能覆盖他的机会成本,他失去的自由世界和他做其他事情能够挣到钱 派生需求:劳动力的需求,取决于…...

vue + koa + Sequelize + 阿里云部署 + 宝塔:宝塔数据库连接
之前文章已经介绍了宝塔上传前后端代码并部署,不清楚的请看这篇文章: vue koa 阿里云部署 宝塔:宝塔前后端部署 下面是宝塔创建数据库: 我用的 koa Sequelize 连接的数据库,Sequelize 非常适合前端使用…...
华为昇腾认证考试内容有哪些
华为昇腾认证考试的内容主要包括理论知识和实践操作两部分。 在理论知识部分,考生需要掌握昇腾计算的基础知识,包括昇腾计算平台的架构、性能特点、应用场景等。此外,还需要深入理解昇腾AI框架、算子开发、模型优化等相关技术原理和应用方法…...

Spring Boot接收从前端传过来的数据常用方式以及处理的技巧
一、params 传参 参数是会拼接到url后面的请求 场景规范:url后面的key值<3个参数的时候,使用params 传参 支持的请求方式:get(正规的是get方式)、post 都行 例如: http://localhost:8080/simpleParam?…...
EFCore通用数据操作类
public class ServiceBase : IServiceBase {protected DbContext Context { get; private set; }public ServiceBase(IEFContext eFContext){Context eFContext.CreateDBContext();}public void Commit(){this.Context.SaveChanges(); // 直接保存就行了}public void Delete&l…...

java Web 辅助学习管理系统idea开发mysql数据库web结构java编程计算机网页源码maven项目
一、源码特点 java Web 辅助学习管理系统是一套完善的信息管理系统,结合java 开发技术和bootstrap完成本系统,对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。 前段主要技术 bootstr…...
使用Python实现K近邻算法
K近邻(K-Nearest Neighbors,简称KNN)是一种简单而有效的分类和回归算法,它通过比较新样本与训练样本的距离来进行预测。在本文中,我们将使用Python来实现一个基本的K近邻算法,并介绍其原理和实现过程。 什…...

Celery的任务流
Celery的任务流 在之前调用任务的时候只是使用delay()和apply_async()方法。但是有时我们并不想简单的执行单个异步任务,比如说需要将某个异步任务的结果作为另一个异步任务的参数或者需要将多个异步任务并行执行,返回一组返回值,为了实现此…...

使用Arcpy进行数据批处理-批量裁剪
时空大数据使我们面临前所未有的机遇和挑战,尤其在地学、遥感或空间技术等专业领域,无疑是一个全新的时代。 伴随着时空大数据的到来,海量数据的处理是一个所有科研工作者都无法忽视的重要问题。传统的数据(主要指空间数据&#x…...

【攻防世界】ics-05
php://filter 伪协议查看源码 preg_replace 函数漏洞 1.获取网页源代码。多点点界面,发现点云平台设备维护中心时,页面发生变化。 /?pageindex 输入什么显示什么,有回显。 用php://filter读取网页源代码 ?pagephp://filter/readconvert.…...
VTK的交互器
VTK中鼠标消息是在交互类型对象(interactorstyle)中响应,因此通过为交互类型对象(interactorstyle)添加观察者(observer)来监听相应的消息,当消息触发时,由命令模式执行相…...

ChatGPT(3.5版本)开放无需注册:算力背后的数据之战悄然打响
✨✨ 欢迎大家来访Srlua的博文(づ ̄3 ̄)づ╭❤~✨✨ 🌟🌟 欢迎各位亲爱的读者,感谢你们抽出宝贵的时间来阅读我的文章。 我是Srlua小谢,在这里我会分享我的知识和经验。&am…...
python项目练习——14.学生管理系统
这个项目可以让用户管理学生的信息,包括学生的姓名、年龄、成绩等,并提供添加、编辑、删除、查询等功能。这个项目涉及到数据库操作、用户界面设计、数据验证等方面的技术。 代码示例: import tkinter as tk # 导入 Tkinter 库 import sqli…...

基于SpringBoot的公益慈善平台
一、项目背景介绍: 基于SpringBoot的公益慈善平台是一款致力于为社会所有人带来便利服务的B/S架构的应用程序。随着网络技术的发展,公益慈善网站已经逐渐成为公益行动的主要信息载体。在这个平台上,主要有管理员、捐赠者和志愿者三种角色&…...

XML Group端口详解
在XML数据映射过程中,经常需要对数据进行分组聚合操作。例如,当处理包含多个物料明细的XML文件时,可能需要将相同物料号的明细归为一组,或对相同物料号的数量进行求和计算。传统实现方式通常需要编写脚本代码,增加了开…...

多模态2025:技术路线“神仙打架”,视频生成冲上云霄
文|魏琳华 编|王一粟 一场大会,聚集了中国多模态大模型的“半壁江山”。 智源大会2025为期两天的论坛中,汇集了学界、创业公司和大厂等三方的热门选手,关于多模态的集中讨论达到了前所未有的热度。其中,…...

Zustand 状态管理库:极简而强大的解决方案
Zustand 是一个轻量级、快速和可扩展的状态管理库,特别适合 React 应用。它以简洁的 API 和高效的性能解决了 Redux 等状态管理方案中的繁琐问题。 核心优势对比 基本使用指南 1. 创建 Store // store.js import create from zustandconst useStore create((set)…...

2021-03-15 iview一些问题
1.iview 在使用tree组件时,发现没有set类的方法,只有get,那么要改变tree值,只能遍历treeData,递归修改treeData的checked,发现无法更改,原因在于check模式下,子元素的勾选状态跟父节…...
Typeerror: cannot read properties of undefined (reading ‘XXX‘)
最近需要在离线机器上运行软件,所以得把软件用docker打包起来,大部分功能都没问题,出了一个奇怪的事情。同样的代码,在本机上用vscode可以运行起来,但是打包之后在docker里出现了问题。使用的是dialog组件,…...

html css js网页制作成品——HTML+CSS榴莲商城网页设计(4页)附源码
目录 一、👨🎓网站题目 二、✍️网站描述 三、📚网站介绍 四、🌐网站效果 五、🪓 代码实现 🧱HTML 六、🥇 如何让学习不再盲目 七、🎁更多干货 一、👨…...
在Ubuntu24上采用Wine打开SourceInsight
1. 安装wine sudo apt install wine 2. 安装32位库支持,SourceInsight是32位程序 sudo dpkg --add-architecture i386 sudo apt update sudo apt install wine32:i386 3. 验证安装 wine --version 4. 安装必要的字体和库(解决显示问题) sudo apt install fonts-wqy…...
scikit-learn机器学习
# 同时添加如下代码, 这样每次环境(kernel)启动的时候只要运行下方代码即可: # Also add the following code, # so that every time the environment (kernel) starts, # just run the following code: import sys sys.path.append(/home/aistudio/external-libraries)机…...
数据库——redis
一、Redis 介绍 1. 概述 Redis(Remote Dictionary Server)是一个开源的、高性能的内存键值数据库系统,具有以下核心特点: 内存存储架构:数据主要存储在内存中,提供微秒级的读写响应 多数据结构支持&…...

Java数组Arrays操作全攻略
Arrays类的概述 Java中的Arrays类位于java.util包中,提供了一系列静态方法用于操作数组(如排序、搜索、填充、比较等)。这些方法适用于基本类型数组和对象数组。 常用成员方法及代码示例 排序(sort) 对数组进行升序…...