Tag: 算法
强化学习(Reinforcement Learning, RL)是一种让智能体/Agent通过与环境交互、试错学习来获得最优行为策略的机器学习方法。本文用一个简单的 Q-learning 迷宫示例,帮助你快速理解强化学习的基本原理。 强化学习入门:从试错中学习的艺术 Reinforcement Learning 101: The Art of Learning by Trial and Error 深度解析强化学习:Q-Learning算法详解 Deep Dive into Reinforcement Learning: Understanding the Q-Learning Algorithm 机器如何学会自己做决定?强化学习告诉你答案 How …
有序数据结构在编程中(尤其是算法竞赛和竞技编程)非常实用。在 Python 中,主要由 Sorted Containers 库提供三种有序数据结构:SortedDict、SortedSet 和 SortedList。 深入理解 Python 有序数据结构:从内置到 SortedContainers Python 有序数据结构完整指南 Python 中的有序列表、字典与集合实战解析 带你玩转 Python SortedContainers 与内置排序结构 Python 开发者必读:SortedContainers 与内置数据结构对比 Python 有序数据结构教程 排序是编程中最常见的操作之一。Python 提供了多种方式来维护有序数据,从内置的列表、集合、堆,到第三方库 sortedcontainers。 本教程将介绍 …
前两天,我想查一下自己在 STEEM 区块链上一些重要记录对应的区块号,比如: 注册了我的账号 #4253590 成为见证人 #20190755 挖到我的第一个区块 #20390040 被孙宇晨大佬代理了 SP #41676911 收到一笔 DAO 收入 #95403889 当时手头只有时间戳,却不知道对应的是哪个区块,于是我想到可以用二分查找(binary search)算法来定位。 其实,这个思路在其它区块链上同样适用,并不依赖于特定的链(如 Steem、以太网/Ethereum、比特币/Bitcoin 等)。虽然具体的实现细节(RPC 方法名、时间戳格式等)会有所不同,但整体逻辑是一致的:通过 RPC API 获取某个区块的时间戳;获取最新区块作为上界;然后在区间内使用二分查找。通过多次查询区块时间戳,就能把给定的时间戳映射到最接近的区块号,算法复杂度约为 O(log N)。 当然,大多数区块链也会提供专门的 API …
停机问题:程序能预测自己吗? 问题:给定程序 P 和输入 x,你能判断 P(x) 是否会停机,还是永远运行下去吗? 由阿兰·图灵于 1936 年提出 被证明为不可判定——不存在通用算法能解决所有情况 本质是自指问题:程序能分析另一个程序(甚至是自己)吗? 图灵的思想实验 假设:H(P, x) 判断 P(x) 是否停机 定义下面的Python函数: def D(P): if H(P, P): while True: pass # 无限循环 …
弟弟说,他想像我一样长大后成为一名程序员。然而,随着 人工智能/AI(比如ChatGPT) 的飞速进化,未来或许程序员这个职业都会被取代。这一两年,互联网大厂的招聘也明显减少了。 不过,我依然认为学习编程是一件好事。写程序不一定是为了当码农,刷题可以锻炼思维。之前教了他 700 天编程,但从未让他真正写代码,大概已经忘得差不多了。现在每天带着他刷题,也算是一次复习与再学习的过程。 对我来说,每天陪着他一起刷题,其实也相当于我自己做了一题。大部分时间里,我不亲自敲代码,而是我讲解,孩子来动手,这样能让他更熟悉代码,学得更快。 微博:我娃又在淘气了. 一身反骨: 我娃说他是想看看多添加几个if 会不会slow it down 相比之下,哥哥对金融更感兴趣,未来想从事相关行业,所以我没有强求他一起刷题,但有时候他也会在一旁听着。 乔布斯曾说:“这个国家的每个人都应该学习编程,因为编程能教会你如何思考。”(It teaches people how to think.) 21 天可以养成习惯 我的儿子现在每天都在刷题,他说想成为一名软件工程师。但他还不知道,ChatGPT 正在统治世界,未来可能不再需要那么多程序员,尤其是初级工程师。 自己这辈子也就这样了,看不到希望,所以鸡个娃。每天带着娃刷力扣,等于自己也刷了一道。 视频:油管/Youtube | B站/小破站 | …
我时不时会收到一些诈骗邮件,大多数情况下,Gmail 会自动将它们归类为垃圾邮件。不过,我经常会去翻一翻垃圾邮件夹,以免错过一些正常的邮件。现在谷歌的算法非常先进,其 AI 模型(基于贝叶斯邮件分类算法 Naive Bayes)的准确率已经超过了 99%。 像上面这样的邮件一看就很假,这其中一个很大的原因是,邮件被归到垃圾邮件夹后,图片不会自动加载,看起来就更加可疑。当然,也不能排除有些人的邮箱过滤能力没这么强,因此更容易上当受骗。更何况,我根本不记得自己在 OpenSea 上卖过东西。我记得 OpenSea 确实可以上传图片,但如果想把它们铸造成 NFT,是需要支付 Gas 费用的(以太网ETH上的)。而我肯定没有付过费,所以这封邮件一定是假的。 希望大家都能多加小心,现在的骗子无孔不入。他们广撒网,用的是最简单却有效的策略:只要数量足够大,即使成功的概率很低,抓住一个就是赚到了。这种小概率事件在样本基数足够大的情况下,总会发生。虽然有些邮件看起来明显是假消息,但这也是骗子的一种筛选方式,用来过滤掉更加谨慎的人,专挑那些容易上当的目标下手。 英文:A blatantly fake phishing email from OpenSea (NFT) 本文一共 438 个汉字, 你数一下对不对. OpenSea一眼假的钓鱼邮件(NFT). …
2024年11月17日
Javascript, Poloniex P站, 交易所 Crypto Exchanges, 加密货币, 区块链, 比特币 BTC, 程序设计, 算法, 编程, 计算机, 计算机, 软件工程
币圈的P站是Poloniex,前几年被孙宇晨收购了,它是一个交易所。我很久之前用过Poloniex,当时对其印象并不是很好。 不过,现在我对其好感增加,因为币安买下的coinmarketcap免费的接口就很多限制。 官方文档),这个接口的频率限制是一秒200次,很慷慨了。 https://api.poloniex.com/markets/price 能返回所有交易配对,比如这样的: 这个JSON返回的结构是一个数组,每个元素是个结构体,也就是一个币价的具体配对信息,我们可以看成是一条边Edge两个顶点Vertice,这样就是一个图结构(带权图 Weighted Graph,权值就是兑换价格),虽然给的是单边,但其实是个双向的,比如USD_BTC得值可以反过来推得BTC到USD的价格。我们可以设计一个算法,从币价A到币价B,可以通过BFS广度优先搜索算法来获取价格。比如有配对A_B、B_C、C_D我们就可以获得A_D的值。 深度优先搜索算法DFS也可以,不过这个算法会返回找到的第一条路径,并不能保证是最短的,最短的确实是最准确的,因为链也长,转换精度就会下降。 当然,可能存在多条路径,最理想的状态是把这些路径都求出来,取个平均啥的,不过这样就得暴力搜索所有的路径了,算法时间复杂度就会比较高。 以下是BFS广度优先算法的代码,Javascript的,可以用于网页前端或者NodeJs后端,甚至是CloudFlare Serverless Worker或者是其它无服务框架:Azure Function、AWS Lambda等。 const fetch = require('node-fetch'); async function getTicker(a, b) { try { const response = …