百锦再@新空间代码工作室
毕业于某985大学本科学士,10+年的软件开发经验;优快云技术社区“全栈领域的优质创作者”;阿里云社区的认证专家博主;古月居的签约作者;51CTO的特约博主;世界人工智能大会BPAA算法大赛算法鉴赏师;黑龙江某企业全栈开发高级工程师。
展开
-
AI算法:机器学习之逻辑回归
逻辑回归算法的历史可以追溯到20世纪50年代和60年代,当时统计学家开始研究如何建立一种能够处理二分类问题的模型。在这个时期,统计学家David Cox提出了一种称为“逻辑函数模型”的方法,该模型最终演变成了现代的逻辑回归算法。逻辑回归的概念是基于概率理论和线性回归模型的。其基本思想是将线性回归的输出通过一个Sigmoid函数(也称为逻辑函数),将其映射到概率范围内,以便对样本进行分类。原创 2024-02-05 10:39:13 · 19128 阅读 · 0 评论 -
AI算法:机器学习之线性回归
线性回归是一种最基本的统计学习方法,用于建立输入变量与连续输出变量之间的关系。其主要目标是找到一条最佳的直线(或超平面),以最小化预测值与实际值之间的差异。模型表示yw0w1x1w2x2wnxnϵyw0w1x1w2x2...wnxnϵ其中,yyy是输出变量,xix_ixi是输入特征,wiw_iwi是对应的权重参数,ϵ\epsilonϵ是误差。损失函数Lw12n∑i1ny。原创 2024-02-04 09:59:53 · 19730 阅读 · 5 评论 -
《啊哈,算法》阅读笔记
简化版的桶排序:有一千个桶,你输入1,就给序号1的标记,你输入10就给输入10的标记;输出的时候,只对标记的输出;输出的自带顺序,因为再输入的时候已经按序入桶了。你输入的数字不能大于桶的个数,否则没地方安置你;输入的数字还不能重复,否则会被替换掉,只能保留一个。你输入的数字也不能说复数,因为,序号没有负数;结论:这是一个弊端很多,但是很好玩的算法;算法复杂度(m是桶的个数,n为待排序个数):O(m+n+m+n);忽略较小常数O(M+N)原创 2023-11-30 11:08:16 · 14679 阅读 · 0 评论 -
自然语言处理的发展
自然语言处理(Natural Language Processing,NLP)是人工智能领域的一个分支,旨在使计算机能够理解、解释和生成自然语言。它涉及了从基本的文本处理任务如文本分类、命名实体识别、情感分析等,到更高级的任务如机器翻译、问答系统、文本生成等。NLP技术有助于将人类语言转化为计算机可理解的形式,包括词法分析、句法分析和语义分析等。这样计算机就能够处理和理解文本、提取关键信息、回答问题等。在实际应用中,NLP被广泛应用于机器翻译、智能客服、语音识别、信息检索等领域。原创 2024-01-18 23:41:30 · 18427 阅读 · 0 评论 -
边缘计算的挑战和机遇
此外,边缘计算的应用开发也将促进就业和人才培养。随着技术的进一步发展和应用的深入,边缘计算将为更多创新和增值服务提供平台和基础,推动数字化和智能化的发展。作为边缘计算系统架构师,您需要了解边缘设备、边缘节点和云计算中心之间的交互、通信和协作方式,并设计出具备高可靠性、低延迟和数据安全性的系统架构。边缘计算作为一种新兴的计算模式和技术,具有许多潜在的增长和创新机会,对中国经济的发展提供了巨大的助力。设备多样性和兼容性:不同的边缘设备和传感器具有不同的能力和接口标准,这可能导致设备之间的互操作性和兼容性问题。原创 2024-01-12 13:34:59 · 17900 阅读 · 0 评论 -
关于分阶段的斗地主程序处理
牌型从大到小(牌型相同情况下按照牌面点数比较)为:火箭(大王+小王),炸弹(四张相同点数的牌),单牌,对子,三张牌,三带一,三带二,顺子(至少五张连续的牌),连对(至少三个连续的对子),飞机(两个或多个连续的三张牌),飞机带翅膀(飞机和同数量的单牌或对子)。牌型:斗地主使用一副54张扑克牌(包括两个鬼牌),按照大小顺序为大王、小王、2、A、K、Q、J、10、9、8、7、6、5、4、3。发牌:首先将一副牌洗混,然后由一名玩家担任发牌员,从这副洗好的牌中依次发牌,每人发17张牌,剩余3张作为底牌。原创 2024-01-09 11:30:46 · 17408 阅读 · 0 评论 -
继续研究五子棋算法
需要注意的是,以上示例代码只是一个简单的框架,具体的评分规则和判断游戏是否结束的条件可能需要根据实际情况进行定义和完善。要确定五子棋中的最优落子位置,常用的算法之一是"极大极小搜索算法",它可以通过模拟双方的落子情况,并评估每个位置的得分来确定最佳位置。,依次扩展检查棋盘上的棋子是否与最后落子的棋子一致,并计数连续的棋子数量。判定五子棋游戏是否结束的算法通常是检查最后落子的位置是否形成了连续的五个棋子,即五子连珠。轮流落子:双方轮流落子,先执黑子的一方落子。五子棋可能是最简单的棋牌了,但是也挺有意思。原创 2024-01-09 11:19:15 · 17455 阅读 · 0 评论 -
调教微信GPT形成的五子棋ai算法
禁手规则(可选):为了增加游戏的平衡性,可以引入禁手规则。禁手规则通常包括长连禁手(即形成六个及以上连续子),以及某些特定情况下的三三禁手和四四禁手。这个简单的算法使用了极小极大搜索算法,通过遍历所有空格,并对每个空格进行深度优先搜索,得到最佳落子位置。胜利条件:当一方玩家在水平、垂直或对角线上连续地形成了五个自己的棋子,即五子连珠时,该玩家获胜。落子:每位玩家在自己的回合中,选择一个未落子的交叉点,在该点放置自己的棋子。以上是五子棋的基本规则,可以根据实际情况,结合比赛或个人的喜好,进行适当的调整。原创 2024-01-08 17:24:56 · 16935 阅读 · 0 评论 -
五子棋的胜负判定算法
五子棋是一种两人对弈的棋类游戏,目标是先在棋盘上形成连续的五个棋子(横向、竖向、斜向)的玩家获胜。原创 2024-01-08 17:11:52 · 17340 阅读 · 0 评论 -
算法对程序员的重要性
程序员需要具备良好的计算机科学和编程基础知识,理解程序的逻辑和架构,熟悉常见的编程语言(如C、C++、Java、Python等)和开发工具(如集成开发环境、调试器、版本控制系统等)。在编写代码时,程序员需要考虑代码的可读性、可维护性和性能等方面,并进行充分的测试和调试,以确保程序的正确性和稳定性。他们需要能够理解和实现更复杂的算法,如图论算法、动态规划、贪心算法等。"算法实现万物都可算"是指通过适当的算法设计和实现,可以解决各种问题,无论是科学、工程、经济、社会等领域的问题,都可以用算法进行求解。原创 2024-01-08 14:26:58 · 17354 阅读 · 0 评论 -
斗地主中的花色比较算法实现
斗地主是一种非常流行的扑克牌游戏,通常由3名玩家进行。游戏的目标是尽快出完手中的牌,并在其他两名玩家之前获得最高的得分。游戏使用一副54张的扑克牌,包括两个鬼牌。游戏开始时,所有牌被平均发给三名玩家,每个人手中的牌数可能不同。发完牌后,游戏进入出牌阶段。出牌阶段从地主开始,地主可以先出牌,然后顺时针轮流出牌。每位玩家可以选择出单牌、对子、三张或者更大的牌组合。出牌时,需要比上家出牌的牌型更大才能成功。当一名玩家出完所有手中的牌后,该玩家获得本局游戏的胜利,并获得相应的得分。原创 2023-12-29 16:31:45 · 16340 阅读 · 0 评论 -
算法——局部最优解
局部最优解是在问题的解空间中找到的满足一定条件的最佳解,而不必考虑全局最优解。一般来说,局部最优解对于一些实际问题来说已经足够好,尤其是问题的解空间很大或者复杂度很高的情况下。祝您好运!原创 2023-12-14 09:21:07 · 16875 阅读 · 0 评论 -
算法——最小生成树
最小生成树(Minimum Spanning Tree,简称MST)是指一张连通图的子图,它包含图中的所有顶点,并且是图中所有生成树中权值之和最小的一个。最小生成树常用于解决网络设计、电力传输、道路规划等问题。祝您好运!原创 2023-12-14 09:19:29 · 15817 阅读 · 0 评论 -
算法——霍夫曼编码
霍夫曼编码(Huffman coding)是一种数据压缩算法,由David A. Huffman提出。它基于将频率较高的字符用较短的编码表示,而将频率较低的字符用较长的编码表示的原理,从而实现对数据的高效压缩。霍夫曼编码的核心思想是构建一棵霍夫曼树(Huffman tree)。首先,统计待压缩的数据中每个字符出现的频率。然后,根据频率来构建霍夫曼树,其中频率较高的字符位于较短的路径上,频率较低的字符位于较长的路径上。原创 2023-12-14 09:17:11 · 19153 阅读 · 0 评论 -
算法——退火算法
退火算法(Simulated Annealing)是一种全局优化算法,用于在搜索空间中找到最优或近似最优解。它通过模拟固体退火的过程来搜索解空间,并在搜索过程中允许一定程度的不稳定性和随机性。初始化一个初始解,并确定初始温度和退火率。在每个温度下,通过扰动当前解来生成一个新解,或者选择随机移动到相邻解。根据目标函数的变化和温度计算接受概率,决定是否接受新解。不断降低温度,使得接受新解的概率逐渐减小,从而逐步收敛到最优解或近似最优解。原创 2023-12-13 11:00:42 · 21981 阅读 · 0 评论 -
算法——Prim算法
Prim算法是一种用于求解图的最小生成树的算法。该算法得名于美国计算机科学家罗伯特·普林姆(Robert C. Prim)。Prim算法的基本思想是从一个起始节点开始,并选择与当前生成树相连的边中权值最小的边,然后将该边加入到生成树中,再选择下一条权值最小的边,直到生成树覆盖了所有节点为止。祝您好运!原创 2023-12-13 10:49:06 · 18035 阅读 · 0 评论 -
算法——Dijkstra算法
Dijkstra算法是一种用于求解图中单源最短路径的算法。该算法得名于荷兰计算机科学家Edsger W. Dijkstra。Dijkstra算法的基本思想是从起始节点开始,逐步确定到达其他节点的最短路径。它通过维护一个节点集合来实现这一过程,初始时该集合只包含起始节点,然后每次选择距离最短的节点,并更新与其相邻节点的距离,直到找到到达目标节点的最短路径或者集合为空。祝您好运!原创 2023-12-13 10:44:28 · 16065 阅读 · 0 评论 -
算法——BST
BST是二叉搜索树(Binary Search Tree)的缩写,它是一种特殊的二叉树结构,其中每个节点的左子树中的所有节点都小于该节点的值,而右子树中的所有节点都大于该节点的值。这使得在BST中可以高效地进行搜索、插入和删除操作。左子树中的所有节点都小于根节点。右子树中的所有节点都大于根节点。左右子树也是二叉搜索树。祝您好运!原创 2023-12-13 10:41:45 · 15724 阅读 · 0 评论 -
算法——BFS
BFS是广度优先搜索(Breadth First Search)的缩写,是一种用于遍历或搜索图或树的算法。它从起始节点开始,逐层地访问其邻居节点,直到找到目标节点或遍历完整个图或树为止。祝您好运!原创 2023-12-13 10:37:40 · 15547 阅读 · 0 评论 -
算法——DFS
DFS是深度优先搜索(Depth First Search)的缩写,是一种用于遍历或搜索图或树的算法。它通过从起始节点开始,沿着一条路径一直访问到最深的节点,然后返回到上一个节点,继续探索其他路径,直到所有节点都被访问过为止。祝您好运!原创 2023-12-13 10:34:51 · 15555 阅读 · 0 评论 -
算法——模糊算法
模糊算法,也称为模糊逻辑或模糊推理,是一种基于模糊集合理论的数学方法,用于处理模糊或不确定性信息。与传统的二值逻辑相比,模糊逻辑允许数据具有模糊性、不确定性和部分真实性。原创 2023-12-12 14:26:44 · 19332 阅读 · 1 评论 -
算法——BP神经网络
BP神经网络(Backpropagation Neural Network),也称为反向传播神经网络,是一种最常见和广泛应用的前馈型人工神经网络模型。BP神经网络由多个层次组成,包括输入层、隐藏层和输出层。每个层级都由多个神经元构成,它们通过带有权重的连接相互连接。信息在网络中从输入层向前传递,通过各层的激活函数进行计算和转化,最终到达输出层。BP神经网络的训练过程中,使用反向传播算法来调整网络中的连接权重。原创 2023-12-12 14:22:05 · 17414 阅读 · 0 评论 -
算法——基数排序
基数排序(Radix Sort)是一种非比较型的排序算法,适用于待排序元素为非负整数的情况。它根据元素的位数(基数)进行排序,在每一位上对元素进行稳定的排序,最终得到有序序列。基数排序的基本思想是,按照个位、十位、百位等依次对待排序元素进行排序。首先将待排序元素按照个位数的大小分配到09的桶中,然后按照桶的顺序依次取出元素得到一个新的序列;接着根据十位数的大小再次分配到09的桶中,再次按照桶的顺序取出元素进行排序。直到最高位排序完成,整个序列就变成了一个有序序列。原创 2023-12-11 16:07:39 · 15312 阅读 · 0 评论 -
算法——桶排序
桶排序(Bucket Sort)是一种排序算法,它将待排序元素分配到不同的桶中,每个桶内的元素再进行单独的排序,最后将所有桶中的元素合并得到有序序列。桶排序的基本思想是,将待排序数组划分成若干个大小相等的子区间(桶),然后将待排序元素逐个插入对应的桶中。接着,对每个桶中的元素进行排序,可以使用其他排序算法,也可以递归地使用桶排序。最后,将各个桶中的元素按照顺序依次取出,即可得到整个数组的排序结果。桶排序的时间复杂度取决于桶的个数和对每个桶中元素进行排序的算法复杂度。原创 2023-12-11 16:03:37 · 15306 阅读 · 0 评论 -
算法——计数排序
计数排序(Counting Sort)是一种线性时间复杂度的排序算法,适用于待排序元素为整数且范围较小的情况。它通过统计每个元素出现的次数,然后利用次数信息将原始序列重新组合成有序序列。计数排序的基本思想是,对待排序的元素进行计数,并建立一个长度等于最大元素值加上1的辅助数组(计数数组),用来存储每个元素出现的次数。然后根据计数数组的信息,依次将元素放回原始数组中的正确位置,以实现排序。统计原始数组中每个元素出现的次数,存储在计数数组中。原创 2023-12-11 16:01:06 · 15328 阅读 · 0 评论 -
算法——希尔排序
希尔排序(Shell Sort),也称递减增量排序算法,是插入排序的一种改进版本。它通过将待排序的元素划分成多个子序列,并对每个子序列进行插入排序,最后再对整个序列进行一次插入排序,以实现对整个数组的排序。希尔排序的基本思想是,通过定义一个增量序列(通常为h序列),将原始数组划分成若干个子序列。然后对每个子序列进行插入排序,逐渐缩小增量,直到增量为1。最后,对整个序列进行一次插入排序,此时由于之前的插入排序的预处理,序列已经基本有序,所以整个排序过程的效率会提高。原创 2023-12-11 15:58:51 · 15275 阅读 · 0 评论 -
算法——归并排序
堆排序(Heap Sort)是一种常见的排序算法,基于二叉堆的数据结构。它利用堆这种数据结构的特性来进行排序,通过多次调整堆的结构实现对元素的排序。堆是一个完全二叉树,其中每个节点的值都大于等于(或小于等于)其子节点的值。根据堆中每个节点的值的大小关系,可以分为最大堆和最小堆。最大堆的根节点是堆中的最大值,最小堆的根节点是堆中的最小值。堆排序的基本思想是,首先将待排序的数组构建成一个最大堆(或最小堆),然后将堆顶元素与堆末尾的元素交换位置,将最大(或最小)元素放到数组的末尾。原创 2023-12-11 15:55:40 · 15269 阅读 · 0 评论 -
算法——快速排序
快速排序(Quick Sort)是一种常用的排序算法,基于分治的思想。它将待排序的数组按照一个基准元素进行划分,使得基准元素左边的元素均小于等于它,右边的元素均大于等于它。然后递归地对基准元素两侧的子数组进行划分和排序,最终完成整个数组的排序。快速排序的基本思想是选择一个基准元素(通常选择第一个或最后一个元素),然后通过一次遍历将数组分成两部分:左边都是小于等于基准元素的元素,右边都是大于等于基准元素的元素。接着,对左右两个子数组分别进行递归排序,直到每个子数组只含有一个元素时结束。原创 2023-12-11 15:49:42 · 15493 阅读 · 0 评论 -
算法——归并排序
归并排序(Merge Sort)是一种基于分治思想的排序算法,它将待排序的数组不断一分为二,直到划分成单个元素为止,然后再将小的子数组逐步合并成较大的有序数组,最终完成整个数组的排序。归并排序的基本思想是先递归地将数组一分为二,然后对两个子数组进行排序,最后将排序好的子数组合并成一个有序的数组。在合并的过程中,通过比较两个子数组中的元素,按从小到大(或从大到小)的顺序放入一个临时数组中,直至将两个子数组完全合并为止。归并排序的实现通过递归和迭代两种方式都可以完成。原创 2023-12-11 15:47:00 · 15281 阅读 · 0 评论 -
算法——插入排序
插入排序(Insertion Sort)是一种简单直观的排序算法,它将待排序列表分为已排序和未排序两部分,每次从未排序部分中取出一个元素,依次插入到已排序部分的适当位置。插入排序的基本思想是将未排序部分的第一个元素与已排序部分进行比较,并找到它在已排序部分中的正确位置。然后将其插入到适当位置后,已排序部分的长度增加1,未排序部分的长度减少1。不断重复该过程,直到未排序部分为空,整个序列排序完成。插入排序的实现通常使用一个for循环和一个while循环嵌套。原创 2023-12-11 15:44:14 · 15276 阅读 · 0 评论 -
算法——选择排序
选择排序(Selection Sort)是一种简单直观的排序算法,它每次从未排序的序列中选择最小(或最大)的元素,并将其放到已排序序列的末尾(或开头)。这个过程类似于每次从桌面上选出最小的一张牌,然后放到手中已有牌的一端。选择排序的基本思想是通过多次遍历未排序序列,每次选择出当前未排序序列的最小(或最大)元素,然后与未排序序列的第一个元素进行交换,将已排序序列的长度逐渐增加,直到整个序列排序完成。选择排序的实现通常使用两层嵌套的循环。原创 2023-12-11 15:41:23 · 15572 阅读 · 0 评论 -
算法——冒泡排序
冒泡排序(Bubble Sort)是一种简单直观的排序算法,它重复地走访要排序的元素,按照相邻元素的大小进行比较并交换,使较大(或较小)的元素逐渐移动到列表的一端。这个过程类似于气泡在水中升起的过程,因此得名冒泡排序。冒泡排序的基本思想是从列表的第一个元素开始,比较相邻的两个元素,如果顺序不正确,则进行交换。这样,每一轮冒泡会将最大(或最小)的元素移到列表的最后一个位置。然后,对剩余未排序的元素进行相同的操作,直到整个列表排序完成。冒泡排序的实现通常使用两层嵌套的循环。原创 2023-12-11 15:38:50 · 15186 阅读 · 0 评论 -
AES算法的java实现
AES(Advanced Encryption Standard)是一种对称加密算法,被广泛应用于保护数据的安全性。AES算法对称密钥长度可以是128位、192位或256位,这使得它足够强大,能够抵御目前和可预见的未来攻击。AES算法通过替换、置换和混淆的步骤,对数据进行加密,其加密和解密使用相同的密钥。由于其高效性和安全性,AES算法在诸如网络通信、数据库加密、文件加密等领域被广泛使用。同时,许多操作系统和编程语言都提供了对AES算法的原生支持,使得开发人员可以轻松地将其集成到自己的应用程序中。原创 2023-12-06 09:35:46 · 15145 阅读 · 0 评论 -
RSA加密算法举例
RSA算法的数字签名过程简言之为:对待签名数据进行哈希运算得到摘要,然后用私钥对摘要进行加密得到签名。验证签名的过程就是用公钥解密签名得到摘要,再对接收到的数据进行哈希运算得到的摘要进行比较,如果一致则认为签名有效。它使用了两个密钥,一个是公开的用于加密的公钥,另一个是私有的用于解密的私钥。加密时,明文m经过公钥的指数e和模数n的运算得到密文c,即。由于大数分解难题的存在,如果知道了公钥无法轻易推导出私钥,因此RSA算法具有较高的安全性。解密时,密文c经过私钥的指数d和模数n的运算得到明文m,即。原创 2023-12-03 18:15:16 · 15901 阅读 · 0 评论 -
线性规划的C#代码示例
算法是代码的升华,关注我,我会不定时更新一些感兴趣的算法给大家分享。原创 2023-12-03 18:11:35 · 15459 阅读 · 2 评论 -
广度优先算法代码示例
【代码】广度优先算法代码示例。原创 2023-12-03 18:07:59 · 14804 阅读 · 0 评论