SML-大数运算问题

直方图规定化:SML和GML 1.单映射规则(SML) 当采用SML映射时,从原始累计直方图向目标累计直方图进行,分别在每一列中找到最小值第一次出现的数的行号。在目标累计直方图中找到与原始累计直方图第一次出现的差值最小的数的行号。然后将原始直方图中灰度级为该列的像素点映射到该行号上。 2.组映射规则(GML) 当采用GML映射时,从目标累计直方图向原始累计直方图进行,找到最小值第一次出现的列号,目标累计直方图从下一个灰度级开始,在原始累计直方图中找到与第一个该灰度级最接近的值。在原始累计直方图中上一个... 阅读详情
大数相加

求解思路:

对于carry状态,两串对应bit相加,结果为ONE+ONE=ZERO则标记GEN,为ONE标记PROP,ZERO+ZERO=ZERO标记为STOP

定义copy函数,使得用scani copy 操作上述所得串,GEN开始向右将非STOP标记的所有bit修改为ZERO,遇到STOP标记的ZERO停止,并将之改为ONE

对于GEN右侧所有的GEN标记过的bit进行加一操作

map转换至bit串


functor MkBigNumAdd(structure U : BIGNUM_UTIL) : BIGNUM_ADD =
struct
structure Util = U
open Util
open Seq

(* Remove this line when you're done. *)
exception NotYetImplemented

infix 6 ++

datatype carry = GEN | PROP | STOP | None

fun Copy (L,R) =
case (L,R) of
((_,GEN),(_,STOP)) => (ONE,STOP)
| ((_,GEN),(_,GEN)) => (ZERO,GEN)
| ((_,STOP),(_,GEN)) => (ZERO,GEN)
| ((_,PRO),(_,GEN)) => (ZERO,GEN)
| ((_,GEN),(_,PROP)) => (ZERO,GEN)
| ((_,PROP),(_,STOP)) => (ZERO,STOP)
| ((ONE,STOP),(ONE,STOP)) => (ONE,PROP)
| ((ONE,STOP),(ZERO,STOP)) => (ZERO,STOP)
| ((ZERO,STOP),(ZERO,STOP)) => (ZERO,STOP)
| ((ZERO,STOP),(ONE,STOP)) => (ONE,STOP)
| ((_,PROP),(_,PROP)) => (ONE,PROP)
| ((_,STOP),(_,PROP)) => (ONE,STOP)
| ((_,None),(_,_)) => R



fun Change ((nl,ll),(nr,lr)) =
if lr = GEN then (if nl = ONE then (ZERO,lr) else (nr,PROP))
else (nl,ll)

fun x ++ y =
case (length x,length y) of
(0,0) => empty ()
| (_,0) => x
| (0,_) => y
| (m,n) =>
let
val (Left,Right) = if m>n then (x,y) else (y,x)
val Temp = map (fn x => (ZERO,STOP)) Left
val PreMask = map (fn x => if x=ONE then (ONE,GEN) else (ZERO,STOP)) Right
val Mask = append (PreMask,subseq Temp (length Right,length Left - length Right))
val PreSeq = map (fn x => if x=ONE then (ONE,PROP) else (ZERO,STOP)) Left
val ReSeq = map2 Change PreSeq Mask
(*val SecMask = append (singleton (ZERO,STOP),ReSeq)
val TrdMask = map2 (fn ((nl,ll),(nr,lr)) => if ll=GEN andalso lr=GEN then (ONE,GEN) else (ZERO,STOP)) ReSeq SecMask
val ForMask = append (TrdMask , singleton (ZERO,STOP))*)

val Result = scani Copy (ZERO,None) ReSeq
val n = length Result
val FivMask = map2 (fn ((nl,ll),(nr,lr)) => (nl,lr)) ReSeq Result
val SixMask = append (singleton (ZERO,STOP),FivMask )
val SevMask = map2 (fn ((nl,ll),(nr,lr)) => if ((ll=lr)andalso(ll=GEN)) then (ONE,GEN) else (nl,ll)) ReSeq SixMask
val EghMask = append (SevMask , singleton (ZERO,STOP))


val SecResult = if #1 (nth Result (n-1)) = ZERO then append (Result , singleton (ONE,STOP))
else Result
val PreSult = map (fn (n,l) => n ) (map2 (fn ((nl,ll),(nr,lr)) => if (nr=ONE andalso lr=GEN) then (nr,lr) (*else if ll=PROP then (ZERO,GEN)*) else (nl,ll)) SecResult EghMask)
in
PreSult
end
val add = op++
end


大数相减

求解思路:

计算机中,x的相反数-x为对x逐位取反后加一,后进行加法操作即可,注意舍去最后的符号位


functor MkBigNumSubtract(structure BNA : BIGNUM_ADD) : BIGNUM_SUBTRACT =
struct
  structure Util = BNA.Util
  open Util
  open Seq

  (* Remove this line when you're done. *)
  exception NotYetImplemented

  infix 6 ++ --

  fun x ++ y = BNA.add (x, y)

  fun Reverse BigNum =
    let
      val Temp = map (fn x => if x=ONE then ZERO else ONE) BigNum
      val One = singleton ONE
    in
      Temp ++ One
    end

  fun x -- y =
    case (length x,length y) of
      (0,0) => empty ()
      | (_,0) => x
      | (0,_) => Reverse y
      | (m,n) =>
        let
          val Temp = map (fn x => ZERO) x
          val Ty = append (y,subseq Temp (n,m-n))
        in
          subseq (x ++ Reverse Ty) (0,m)
        end

  val sub = op--
end




大数乘法

求解思路:

对于二进制数A、B

A*B = ( p*2^(m/2) +q  )*( r*2^(n/2) + s ) = pr(2^n - 2^(n/2)) + (p +q)*(r +s)*2^(n/2) + (1-2^(n/2))*qs

从而分而治之


functor MkBigNumMultiply(structure BNA : BIGNUM_ADD
                         structure BNS : BIGNUM_SUBTRACT
                         sharing BNA.Util = BNS.Util) : BIGNUM_MULTIPLY =
struct
  structure Util = BNA.Util
  open Primitives
  open Util
  open Seq

  (* Remove this line when you're done. *)
  exception NotYetImplemented

  infix 6 ++ --
  infix 7 **

  (* A*B = ( p*2^(m/2) +q  )*( r*2^(n/2) + s ) = pr(2^n - 2^(n/2)) + (p +q)*(r +s)*2^(n/2) + (1-2^(n/2))*qs*)
  fun x ++ y = BNA.add (x, y)
  fun x -- y = BNS.sub (x, y)
  fun x ** y =
    case (length x,length y) of
      (0,_) => empty ()
      | (_,0) => empty ()
      | (1,1) => if (nth x 0) = ONE andalso (nth y 0) = ONE then singleton ONE else singleton ZERO
      | (m,n) =>
      let
        val len = if m > n then m else n
        val mid = len div 2
        val (q,p,s,r) =
        (subseq x (0,mid),subseq x (mid,m - mid),subseq y (0,mid),subseq y (mid,n - mid))
        val (sum1,sum2) = (p ++ q,r ++ s)
        val (pr,qs,tp) = par3 (fn () => p ** r,fn () => q ** s,fn () => sum1 ** sum2 )
        val Temp = tp -- pr -- qs
        val Q1 = append ((tabulate (fn i => ZERO) (mid*2)),pr)
        val Q2 = append ((tabulate (fn i => ZERO) mid),Temp)
      in
        Q1 ++ Q2 ++ qs
      end
  val mul = op**
end




空间机器学习专用IDE:SRS感知与混合数据协同开发平台 空间机器学习是地理信息科学与人工智能交叉融合的前沿方向,其核心在于处理具有坐标、投影、拓扑和时空属性的异构数据。区别于通用Python开发环境,专业IDE需深度支持空间参考系统(SRS)全程无损传递、栅格/矢量/时序混合数据结构的内存协同、空间自相关验证(如Moran’s I)、以及空间元数据版本治理等关键技术原理。这类工具不仅提升模型训练效率,更保障结果的空间可解释性与工程可复现性,广泛应用于城市热岛建模、农业遥感分类、流行病传播模拟与地质风险预测等真实场景。本文聚焦5款具备SRS感知能力与多模态协同特性 阅读详情

相关推荐

【信息科学与工程学】【安全领域】 第八十八篇 网络空间安全21

如果员工认为安全政策和流程(如复杂的密码规则、频繁的认证、繁琐的软件安装审批)阻碍了工作效率,他们可能会寻找变通方法,例如:写下密码、共享账户、使用未经批准的云服务(影子IT)、绕过安全控制。例如,一个用于显示用户列表的API,可能返回每个用户的完整个人资料,包括邮箱、地址、电话等敏感字段,而前端可能只显示了姓名。:在OAuth 2.0或OIDC流程中,攻击者可能截获授权请求中的“授权码”,或窃取“访问令牌”,然后将其用于另一个客户端(非原始授权的客户端),从而以用户身份访问受保护的资源。

weixin_49199313的博客 444

c语言入门小问题2

思路:打印这种有规律的列表或者打印沙漏、打印飞机都需要规律的循环打印,直接输出也是可以但是太麻烦。从1*1到9*9可知道有两层循环,前位循环9次后位循环9位,输出的时候也要注意一下格式。开始我简单粗暴想的是直接用字符串读,getchar读一个累加一次,但操作量实在过大。显而易见,我们的※和空格都是有规律的,每一层对应的* 空格有规律。输出格式: 首先顺序输出从A到B的所有整数,每5个数字占一行。给定两个整数A和B,输出从A到B的所有整数以及这些数的和。这道题不难,用循环就可以输出并累加,需要注意题的格式。

weixin_73240443的博客 516

图像直方图的规定化处理(SML算法)

图像直方图的规定化处理(SML算法),和大家分享一下。

直方图规定化——GML和SML映射规则

GML和SML原理 GML规定化(组映射) 先列出图像灰度值i,j,计算原始直方图Pr(i),列出规定直方图Pz(j),计算原始累计直方图Pi和规定累计直方图Pj,然后按照Pj到Pi寻找最接近的值存储为j,当满足给定的值多于一个时,按惯例取最小值。确定变换关系为i->j,最后列出匹配直方图P(j)。 SML规定化(单映射) 先列出图像灰度值i,j,计算原始直方图Pr(i),列出规定直方图Pz...

Rjex 1万+

MFC实现大数运算,带符号,加减乘除四则运算,除法算法有优化

MFC实现大数运算,带符号,加减乘除四则运算,除法算法有优化

sml:机器学习算法(例如,ELM,高斯过程,Boosting)用于事件生存时间的结果

机器学习的生存数据 安装 # Install sml library( devtools ); install_github( ' linxihui/sml ' ); 背景:考克斯比例风险模型 考克斯模型假设比例风险在所有观察结果之间成比例。 在这种假设下,出现了部分可能性,该部分可能性也可以被视为不涉及基线危险函数的概貌和条件可能性,因此感兴趣的参数获得了更大程度的估计自由度。 考克斯偏似的样子 其中$ \ theta_i $通常被称为links或log risk (因为$ \ exp {\ theta_i} $被称为risk )。 在考克斯的模型中 当前实施的算法 高斯过程 高斯过程的回归和分类已被证明是强大的。 但是,R中没有生存扩展。​​但是,通过假设$ \ theta $是从高斯过程(先前)中采样而来的,扩展是非常简单的。 其中$ K =(k_ {ij})= K(x_i

直方图规定化之SML和GML映射

参考: 章毓晋. 图像工程(上册):图像处理[M]. 北京: 清华大学出版社,2006. 灰度直方图规定化实现方法的分析 pdf http://blog.youkuaiyun.com/juyingmin/article/details/5675851 http://blog.jrj.com.cn/110111010059963505,1483865a.html http://course.cug.e

gxiaob的专栏 2万+

GML映射算法及实现

C#实现图像处理中的GML直方图规定化映射算法,并且提供了测试工具

one+two=3。

题目描述: 读入两个小于100的正整数A和B,计算A+B。需要注意的是:A和B的每一位数字由对应的英文单词给出。 输入: 测试输入包含若干测试用例,每个测试用例占一行,格式为"A + B =",相邻两字符串有一个空格间隔。当A和B同时为0时输入结束,相应的结果不要输出。 输出: 对每个测试用例输出1行,即A+B的值。 样例输入: one + two = three four + five six ...

weixin_44712472的博客 2081

幸狐RV1106开发板实战:5分钟搞定Yolo8模型部署(附避坑指南)

本文详细介绍了在幸狐RV1106开发板上快速部署YOLOv8模型的实战流程。通过RKNN-Toolkit2工具链,将ONNX模型转换为RV1106 NPU专用的RKNN格式,并完成交叉编译与上板运行。文章重点分享了环境搭建、模型转换的关键步骤以及常见的避坑指南,帮助开发者高效实现边缘AI目标检测应用。

weixin_28677451的博客 912

# 解决 win11 连接共享打印机,报错 0x00000709 问题

# 解决 win11 连接共享打印机,报错 0x00000709 问题

段子手168的博客 9万+

虚拟计算机,虚拟的语言,用虚拟的语言完成文章中的三个问题

【代码】虚拟计算机,虚拟的语言,用虚拟的语言完成文章中的三个问题。

zhyjhacker的博客 244

为什么你的XGBoost多分类效果不如预期?可能是这5个参数没调对

本文深度剖析了XGBoost模型在处理多分类问题时效果不佳的五大关键参数陷阱。针对多分类问题的独特性,文章提供了max_depth、learning_rate、采样参数及正则化参数等核心参数的量化调整策略与诊断方法,帮助开发者精准调优,有效提升模型在各类别上的均衡性能与泛化能力。

weixin_29182481的博客 296

深入解析NXP PKHA硬件加速器:Montgomery算法与模运算实战

模运算是密码学与嵌入式安全的核心数学基础,它通过将无限整数映射到有限环上,为RSA、ECC等公钥密码体系提供理论支撑。其计算效率直接影响系统性能,尤其在资源受限的嵌入式环境中,软件实现往往面临性能瓶颈。为此,硬件加速技术应运而生,通过专用算术单元和并行处理大幅提升运算速度。NXP QorIQ系列芯片中的公钥硬件加速器(PKHA)便是典型代表,它提供了一套完整的模运算函数库,覆盖从基础模加、模减到模幂、模逆等高级操作。理解其核心——Montgomery算法——是实现高效硬件加速的关键,该算法通过域转换将昂贵的

weixin_33168937的博客 267

KAN神经网络实战:如何用Python快速搭建你的第一个可解释性模型

本文提供了使用Python和PyTorch快速搭建首个KAN(Kolmogorov-Arnold Networks)神经网络模型的实战指南。通过对比传统MLP,详细解析了KAN利用可学习的边函数实现更高可解释性的核心原理,并逐步演示了从环境配置、数据准备、核心模块实现到模型训练与可视化的完整流程,帮助开发者掌握这一新兴的可解释性AI模型构建方法。

convnet3designer的博客 473

【仿真】Carla Python API实战:从零搭建自动驾驶测试环境

本文详细介绍了如何使用Carla Python API从零搭建自动驾驶测试环境。通过Carla仿真平台,开发者可以构建高度逼真的城市环境和车辆物理模型,利用Python API实现传感器配置、数据采集、场景构建及自动驾驶算法集成。文章还分享了实际项目中的调试技巧和性能优化经验,帮助读者快速掌握自动驾驶仿真测试的核心技术。

weixin_29050513的博客 213

gazebo 直接获取传感器数据_IO-Link如何为工业物联网提供底层数据基础?

随着工业4.0的发展,工业物联网的更新迭代,对工业控制领域的要求越来越高。为了迎合物联网的需要,在底层传感器等设备领域需要有一些新技术的引入,提供大数据,从而推动物联网的发展。能简化工业控制领域底层设备连接,提供设备的大量数据信息的一种新技术——IO-Link,由此出现。一、工业物联网需要工业做出哪些变革——IO-Link技术的出现工业4.0的发展,使得可通过实际的智能制造和大数据处理的互相融合,...

weixin_39678426的博客 332

SFF-8654接口引脚定义全解析:从SAS到U.2的高速硬件连接核心

在高速数据存储与传输领域,接口标准是连接主机与存储设备、确保信号完整性与协议互通性的物理基础。其核心原理在于通过精确定义的物理引脚和电气特性,承载不同的高速串行通信协议,如SAS和PCIe。这类高密度连接器的技术价值在于以紧凑的形态支持多协议兼容与高速率传输,满足了企业级存储、高性能计算对带宽和可靠性的苛刻要求。典型的应用场景包括服务器硬盘背板连接、NVMe U.2固态硬盘直连以及外部存储扩展。本文聚焦于SFF-8654(亦称Mini SAS HD)这一关键接口,深入剖析其引脚定义、信号分区(如高速数据通道

weixin_29188043的博客 711

探索高效编程新境界:Inpla,互动网络的编程革命

探索高效编程新境界:Inpla,互动网络的编程革命 项目简介 在浩瀚的编程语言宇宙中,一颗新星璀璨升起——Inpla,一个基于多线程并行执行的交互网(Interaction Nets)解释器。此项目自2024年6月6日以版本0.12.4发布,标志着编程世界向更高效计算迈出了重要一步。通过POSIX线程库,Inpla让每个CPU核心独立管理一个线程,实现无缝并行处理,赋予了程序前所未有的执行速度。 ...

gitblog_00344的博客 836

R语言coxph函数对加权数据集进行竞争风险模型拟合、regplot包的regplot函数可视化竞争风险回归模型的列线图nomogram、计算特定病例的事件概率(控制了竞争风险的累计事件概率)

R语言coxph函数对加权数据集进行竞争风险模型拟合、regplot包的regplot函数可视化竞争风险回归模型的列线图nomogram、计算特定病例的事件概率(控制了竞争风险的累计事件概率)

statistics+insight+vista+power 359

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

IO-Link—为工业物联网提供底层数据基础

随着工业4.0的发展,工业物联网的更新迭代,对工业控制领域的要求越来越高。为了迎合物联网的需要,在底层传感器等设备领域需要有一些新技术的引入,提供大数据,从而推动物联网的发展。能简化工业控制领域底层设备连接,提供设备的大量数据信息的一种新技术——IO-Link,由此出现。 一、工业物联网需要工业做出哪些变革——IO-Link技术的出现 工业4.0的发展,使得可通过实际的智能制造和大数据处理的互相融合,生产线的实体可以通过物联网来进行远程操作,实现互联互通。那么,工业的物联网,需要工业做出哪些变革? 下

工业通讯__HongKe的博客 3241

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

工业通讯 | IO-Link—为工业物联网提供底层数据基础

随着工业4.0的发展,工业物联网的更新迭代,对工业控制领域的要求越来越高。为了迎合物联网的需要,在底层传感器等设备领域需要有一些新技术的引入,提供大数据,从而推动物联网的发展。能简化工业控制领域底层设备连接,提供设备的大量数据信息的一种新技术——IO-Link,由此出现。 一、工业物联网需要工业做出哪些变革——IO-Link技术的出现 工业4.0的发展,使得可通过实际的智能制造和大数据处理的互相融合,生产线的实体可以通过物联网来进行远程操作,实现互联互通。那么,工业的物联网,需要工业做出哪些变革?.

Hongke_Tech的博客 1635

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

走进Scala

1. 了解Scala 1.1Scala来源 ​ Scala名字由来:Scalable Language两个单词相结合;意大利语中 scala意为“梯子”或“楼梯”,蕴含“更佳的编程语言”。 ​ Martin Odersky(马丁·奥德斯基)于2001年基于Funnel的工作开始设计Scala。Funnel是把函数式编程思想和Petri网相结合的一种编程语言。Martin Odersky先前的...

东北溜达滑的博客 394

SML表达式的规则

每个值有固定对应的类型,如32为int, true为bool, ()为unit。表达式:常量(如整数42), 变量、加减运算、if条件、大于等于小于逻辑运算、函数调用等。变量名称需要遵守名称规则:字母、数字和下划线组成,但不以数字开头。如果e2计算结果为false, 则返回e3计算结果。如果e1计算结果为true, 则返回e2计算结果。所有的值都是表达式,如32, true, ()e2和e3计算结果为同一个类型。每个表达式都有语法、类型检查规则和计算规则。检查类型,不存在,则报错。其他表达式可类似书写。

weixin_42281226的博客 284

MATLAB--数字图像处理 图像的灰度变换与直方图修正

一、实验名称 图像的灰度变换与直方图修正 二、实验目的 1.熟悉MATLAB软件的使用。 2.掌握灰度变换、直方图修正的原理及数学运算。 3.于MATLAB环境下编程实现对图片的灰度变换和直方图修正。 三、实验内容 1.对于给定图片,在MATLAB软件下编程实现对图片的不同程度的灰度变换。 2.对于给定图片,在MATLAB软件下编程实现对图片的不同程度的直方图修正。 四、实验仪器与设备 Win10...

海到无边天作岸 山登绝顶我为峰 1万+
上一篇: SML—括号最大匹配距离问题(一)
下一篇: UGUI—ScrollBar与Image以及Text实现文本的可移动
Numlogn
博客等级 码龄10年 1粉丝 17原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值