当前位置: 首页 > news >正文

春晚刘谦魔术——约瑟夫环

昨晚,刘谦在春晚上表演了一个魔术,通过对四张撕成两半的纸牌连续操作,最终实现了纸牌的配对。

这个魔术虽然原理不是很难,但是通过刘谦精湛的表演还是让这个魔术产生了不错的效果(虽然我感觉小尼的效果更不错)

这个魔术通过一系列的操作来实现对纸牌位置的控制,最后通过一张牌丢掉,另一张牌放到最后的形式实现简易的约瑟夫环

在这里解读这个魔术不是重点,主要给大家讲解一下约瑟夫环以及其在大数据领域的具体应用

约瑟夫环的原理

据说著名犹太历史学家 Josephus有过以下的故事:在罗马人占领乔塔帕特后,39 个犹太人与Josephus及他的朋友躲到一个洞中,39个犹太人决定宁愿死也不要被敌人抓到,于是决定了一个自杀方式:41个人排成一个圆圈,由第1个人开始报数,每报数到第3人该人就必须自杀,然后再由下一个重新报数,直到所有人都自杀身亡为止。然而Josephus 和他的朋友并不想遵从。首先从一个人开始,越过k-2个人(因为第一个人已经被越过),并杀掉第k个人。接着,再越过k-1个人,并杀掉第k个人。这个过程沿着圆圈一直进行,直到最终只剩下一个人留下,这个人就可以继续活着。问题是一开始要站在什么地方才能避免自杀?Josephus要他的朋友先假装遵从,他将朋友与自己安排在第16个与第31个位置,于是逃过了这场死亡游戏。

约瑟夫环问题,也被称为约瑟夫杀人问题,源自一个古老的数学问题。在这个问题中,N个人围成一圈,从第一个人开始报数,每报到第M个人就将其杀死,然后从下一个人开始重新报数,如此循环,直到最后只剩下一个人,那个人就是最后的幸存者

这个问题可以用数学公式来描述,设f[i]表示每次报数到M的人出列后,剩下的i个人(1<=i<=n)中最后幸存者的位置编号(从1开始),

则有递推公式:f[i]=(f[i−1]+m)%i 其中,初始条件为f[1]=0。

涉及这种问题可以参考这道题:

力扣(LeetCode)官网 - 全球极客挚爱的技术chun成长平台

在大数据领域的具体应用

在大数据领域,约瑟夫环问题的思想被广泛应用于负载均衡数据分片等场景。

一致性哈希算法

一致性哈希算法目的是目的是解决分布式系统的数据分区问题:当分布式集群移除或者添加一个服务器时,必须尽可能小地改变已存在的服务请求与处理请求服务器之间的映射关系。

在一致性哈希算法中,所有的服务器节点和数据都被映射到一个环形的空间(称为哈希环),当需要查找某个数据时,可以沿着这个环顺时针查找,直到找到第一个大于等于该数据哈希值的服务器节点,这个过程就类似于约瑟夫环问题中的报数和删除过程。

一致性哈希算法的优点是,当增加或删除节点时,只需要重新分配哈希环上的一小部分数据,大大减少了数据迁移的开销。可以很好地解决了分布式系统在扩容或者缩容时,发生过多的数据迁移的问题,这对于大规模的分布式系统来说非常重要,因为在这种系统中,节点的增加和删除是非常频繁的。

数据分片

在大数据处理中,数据分片是一种常见的策略,它可以将大规模的数据集分割成多个小的数据片,然后在不同的计算节点上并行处理这些数据片,从而提高处理速度。

约瑟夫环问题的思想可以用于数据分片的分配策略。例如,我们可以将数据集看作一个环形的结构,然后按照约瑟夫环问题的方式,每隔M个数据就分配给一个计算节点,这样就可以均匀地将数据分配给所有的计算节点,可以一定程度上解决数据分布不均的问题。

此外,约瑟夫环问题的 解法也为处理大规模数据提供了一种高效的方法,可以在O(N)的时间复杂度内解决问题,这对于大数据处理来说非常重要。

总结

总的来说,约瑟夫环问题的思想在大数据领域有着广泛的应用,它为处理大规模数据提供了一种高效、均匀的策略,对于提高大数据处理的效率和性能有着重要的作用。

相关文章:

春晚刘谦魔术——约瑟夫环

昨晚&#xff0c;刘谦在春晚上表演了一个魔术&#xff0c;通过对四张撕成两半的纸牌连续操作&#xff0c;最终实现了纸牌的配对。 这个魔术虽然原理不是很难&#xff0c;但是通过刘谦精湛的表演还是让这个魔术产生了不错的效果&#xff08;虽然我感觉小尼的效果更不错&#xff…...

itextpdf使用:使用PdfReader添加图片水印

gitee参考代码地址&#xff1a;https://gitee.com/wangtianwen1996/cento-practice/tree/master/src/test/java/com/xiaobai/itextpdf 参考文章&#xff1a;https://www.cnblogs.com/wuxu/p/17371780.html 1、生成带有文字的图片 使用java.awt包的相关类生成带文字的图片&…...

如何为Kafka加上账号密码(二)

认证策略SASL/PLAIN 上篇文章中我们讲解了Kafka认证方式和基础概念&#xff0c;并比较了不同方式的使用场景。 我们在《2024年了&#xff0c;如何更好的搭建Kafka集群&#xff1f;》中集群统一使用PLAINTEXT通信。Kafka通常是在内网使用&#xff0c;但也有特殊的使用场景需要…...

【大数据】Flink on YARN,如何确定 TaskManager 数

Flink on YARN&#xff0c;如何确定 TaskManager 数 1.问题2.并行度&#xff08;Parallelism&#xff09;3.任务槽&#xff08;Task Slot&#xff09;4.确定 TaskManager 数 1.问题 在 Flink 1.5 Release Notes 中&#xff0c;有这样一段话&#xff0c;直接上截图。 这说明从 …...

ES节点故障的容错方案

ES节点故障的容错方案 1. es启动加载逻辑1.1 segment和translg组成和分析1.2 es节点启动流程1.3 es集群的初始化和启动过程 2. master高可用2.1 选主逻辑2.1.1 过滤选主的节点列表2.1.2 Bully算法2.1.2 类Raft协议2.1.3 元数据合并 2.2 HA切换 3. 分片高可用3.1 集群分片汇报3.…...

【Flink】FlinkSQL实现数据从Kafka到MySQL

简介 未来Flink通用化,代码可能就会转换为sql进行执行,大数据开发工程师研发Flink会基于各个公司的大数据平台或者通用的大数据平台,去提交FlinkSQL实现任务,学习Flinksql势在必行。 本博客在sql-client中模拟大数据平台的sql编辑器执行FlinkSQL,使用Flink实现数据从Kafka传…...

Unity GC

本文由 简悦 SimpRead 转码&#xff0c; 原文地址 mp.weixin.qq.com 简略版本 在 Unity 中&#xff0c;垃圾回收&#xff08;Garbage Collection&#xff0c;GC&#xff09;采用的是基于标记-清除&#xff08;Mark and Sweep&#xff09;算法的自动内存管理机制。 基于标记-清…...

Vue源码系列讲解——变化侦测篇【下】(Array的变化侦测)

目录 1. 前言 2. 在哪里收集依赖 3. 使Array型数据可观测 3.1 思路分析 3.2 数组方法拦截器 3.3 使用拦截器 4. 再谈依赖收集 4.1 把依赖收集到哪里 4.2 如何收集依赖 4.3 如何通知依赖 5. 深度侦测 6. 数组新增元素的侦测 7. 不足之处 8. 总结 1. 前言 上一篇文…...

【机器学习笔记】贝叶斯学习

贝叶斯学习 文章目录 贝叶斯学习1 贝叶斯学习背景2 贝叶斯定理3 最大后验假设MAP(Max A Posterior)4 极大似然假设ML(Maximum Likelihood)5 朴素贝叶斯NB6 最小描述长度MDL 1 贝叶斯学习背景 试图发现两件事情的关系&#xff08;因果关系&#xff0c;先决条件&结论&#x…...

ElasticSearch之倒排索引

写在前面 本文看下es的倒排索引相关内容。 1&#xff1a;正排索引和倒排索引 正排索引就是通过文档id找文档内容&#xff0c;而倒排索引就是通过文档内容找文档id&#xff0c;如下图&#xff1a; 2&#xff1a;倒排索引原理 假定我们有如下的数据&#xff1a; 为了建立倒…...

win11安装mysql8.3.0压缩包版 240206

mysql社区版安装包版windows安装包下载地址 在系统环境变量path无点.的情况下 powershell 可以 .\ 或 ./ 开头表示当前文件夹cmd 可以直接命令或.\开头, 不能./开头 所以 .\ 在cmd和powershell中通用 步骤 在解压目录 .\mysqld --initialize-insecure root无密码初始化.\m…...

数据库索引与优化:深入了解索引的种类、使用与优化

数据库索引与优化&#xff1a;深入了解索引的种类、使用与优化 索引的种类 数据库索引是提高查询速度的重要手段之一&#xff0c;主要分为以下几种类型&#xff1a; 主键索引&#xff08;Primary Key Index&#xff09;&#xff1a; 唯一标识表中的每一行数据&#xff0c;保…...

React 错误边界组件 react-error-boundary 源码解析

文章目录 捕获错误 hook创建错误边界组件 Provider定义错误边界组件定义边界组件状态捕捉错误渲染备份组件重置组件通过 useHook 控制边界组件 捕获错误 hook getDerivedStateFromError 返回值会作为组件的 state 用于展示错误时的内容 componentDidCatch 创建错误边界组件 P…...

分享66个相册特效,总有一款适合您

分享66个相册特效&#xff0c;总有一款适合您 66个相册特效下载链接&#xff1a;https://pan.baidu.com/s/1jqctaho4sL_iGSNExhWB6A?pwd8888 提取码&#xff1a;8888 Python采集代码下载链接&#xff1a;采集代码.zip - 蓝奏云 学习知识费力气&#xff0c;收集整理更不…...

chagpt的原理详解

GPT&#xff08;Generative Pre-trained Transformer&#xff09;是一种基于Transformer架构的生成式预训练模型。GPT-3是其中的第三代&#xff0c;由OpenAI开发。下面是GPT的基本原理&#xff1a; Transformer架构&#xff1a; GPT基于Transformer架构&#xff0c;该架构由Att…...

dockerfile 详细讲解

当编写 Dockerfile 时&#xff0c;你需要考虑你的应用程序所需的环境和依赖项&#xff0c;并将其描述为一系列指令。下面是一个简单的示例&#xff0c;演示如何编写一个用于部署基于 Node.js 的网站的 Dockerfile&#xff1a; Dockerfile # 使用官方 Node.js 镜像作为基础镜像…...

跟着pink老师前端入门教程-day23

苏宁网首页案例制作 设置视口标签以及引入初始化样式 <meta name"viewport" content"widthdevice-width, user-scalableno, initial-scale1.0, maximum-scale1.0, minimum-scale1.0"> <link rel"stylesheet" href"css/normaliz…...

JRT监听程序

本次设计避免以往设计缺陷&#xff0c;老的主要为了保持兼容性&#xff0c;在用的设计就不好调了。 首先&#xff0c;接口抽象时候就不在给参数放仪器ID和处理类了&#xff0c;直接放仪器配置实体&#xff0c;接口实现想用什么属性就用什么属性&#xff0c;避免老方式要扩参数时…...

MCU+SFU视频会议一体化,视频监控,指挥调度(AR远程协助)媒体中心解决方案。

视频互动应用已经是政务和协同办公必备系统&#xff0c;早期的分模块&#xff0c;分散的视频应该不能满足业务需要&#xff0c;需要把视频监控&#xff0c;会议&#xff0c;录存一体把视频资源整合起来&#xff0c;根据客户需求&#xff0c;需要能够多方视频互动&#xff0c;直…...

1184. 欧拉回路(欧拉回路,模板题)

活动 - AcWing 给定一张图&#xff0c;请你找出欧拉回路&#xff0c;即在图中找一个环使得每条边都在环上出现恰好一次。 输入格式 第一行包含一个整数 t&#xff0c;t∈{1,2}&#xff0c;如果 t1&#xff0c;表示所给图为无向图&#xff0c;如果 t2&#xff0c;表示所给图为…...

轻量级嵌入式按键驱动库:BartOS-button设计与多平台实践

1. BartOS-button 库概述BartOS-button 是为 BartOS 嵌入式实时操作系统项目配套开发的轻量级按键驱动库&#xff0c;专为资源受限的 IoT 终端设备设计。该库不依赖特定硬件抽象层&#xff08;HAL&#xff09;&#xff0c;采用纯 C 实现&#xff0c;支持裸机&#xff08;Bare-m…...

ZYNQ7010核心板硬件设计实战——从原理图到PCB的工程化思考

1. 从零开始构建ZYNQ7010核心板 第一次接触ZYNQ7010这种集成了ARM处理器和FPGA的SoC芯片时&#xff0c;我既兴奋又忐忑。这种混合架构的芯片确实强大&#xff0c;但随之而来的硬件设计复杂度也让人头疼。特别是当看到官方推荐的8层甚至12层PCB方案时&#xff0c;作为个人开发者…...

Nanbeige 4.1-3B Streamlit WebUI实战:游戏剧情生成与角色对话工具

Nanbeige 4.1-3B Streamlit WebUI实战&#xff1a;游戏剧情生成与角色对话工具 1. 引言&#xff1a;当AI模型遇上二次元聊天室 如果你玩过《蔚蓝档案》这类二次元游戏&#xff0c;一定对里面那个清爽、可爱的手机短信式聊天界面印象深刻。现在&#xff0c;有个好消息是&#…...

大模型LLM ACA - ACP认证考试模拟试卷一

目录 一、大模型LLM ACA - ACP认证考试 二、大模型LLM ACA - ACP认证考试模拟试卷 &#xff08;一&#xff09;单选题&#xff1a;70 题 1 分 70 分 1. 在代码中&#xff0c;answer_correctness 指标的主要作用是什么&#xff1f; 2. 在ask_llm_route函数中&#xff0c;…...

Video-LLaMA部署指南:如何在本地服务器上高效运行多模态AI

Video-LLaMA部署指南&#xff1a;如何在本地服务器上高效运行多模态AI 【免费下载链接】Video-LLaMA [EMNLP 2023 Demo] Video-LLaMA: An Instruction-tuned Audio-Visual Language Model for Video Understanding 项目地址: https://gitcode.com/gh_mirrors/vi/Video-LLaMA …...

搜索时代的命名战略:如何在亚马逊规避“品牌失语症”

在亚马逊这个由算法与关键词统治的商业世界里&#xff0c;一个名字的恰当与否&#xff0c;直接决定了品牌是“响亮宣言”还是“沉默失语”。许多名字如同《时代》或《财富》杂志&#xff0c;在传统语境中或许优雅&#xff0c;但在需要极致精准的数字货架上&#xff0c;却可能因…...

别再乱接Type-C了!手把手教你设计一个5V/5A的稳定电源模块(附电路图)

5V/5A Type-C电源模块实战设计指南&#xff1a;从选型到避坑全解析 Type-C接口凭借其正反插拔的便利性&#xff0c;已成为现代电子设备的标配。但许多DIY爱好者在自制Type-C电源模块时&#xff0c;常遇到供电不稳、接口烧毁甚至设备损坏的问题。本文将带你从零设计一个稳定可靠…...

PyTorch 3.0静态图分布式训练插件下载与安装(官方未公开的--enable-static-graph标志使用手册)

第一章&#xff1a;PyTorch 3.0静态图分布式训练插件下载与安装PyTorch 3.0 并非官方发布的正式版本&#xff08;截至 2024 年&#xff0c;PyTorch 最新稳定版为 2.3.x&#xff09;&#xff0c;因此“PyTorch 3.0 静态图分布式训练插件”属于概念性技术预研组件&#xff0c;目前…...

Kerbrute组合暴力破解:用户名密码组合文件测试的完整教程

Kerbrute组合暴力破解&#xff1a;用户名密码组合文件测试的完整教程 【免费下载链接】kerbrute A tool to perform Kerberos pre-auth bruteforcing 项目地址: https://gitcode.com/gh_mirrors/ke/kerbrute Kerbrute是一款专门用于通过Kerberos预认证进行Active Direct…...

C#开发者的福音:用SqlSugar封装一个通用数据访问层,支持SQLite/SQL Server/MySQL一键切换

构建企业级数据访问层&#xff1a;SqlSugar多数据库适配架构实战 在当今快速迭代的软件开发环境中&#xff0c;数据访问层作为连接业务逻辑与持久化存储的关键桥梁&#xff0c;其设计质量直接影响着系统的可维护性和扩展性。对于C#开发者而言&#xff0c;SqlSugar以其轻量级和高…...