GS problem: stable matching

GS问题描述了一个医疗机构向医学院学生发出邀约的过程,学生根据偏好选择接受或拒绝。稳定匹配算法确保双方都能找到满意的选择。典型例子如婚姻稳定匹配问题,其特点是男性有表白权,女性只能接受或拒绝,且匹配过程中满足特定稳定性条件。此外,该问题可扩展到公司与求职者、志愿录取等场景,通过稳定匹配解决资源分配问题。

#背景提出:
市场一方中的对象(医疗机构)向另一方中的对象(医学院学生)提出要约,每个学生会对自己接到的要约进行考虑,然后抓住自己青睐的(认为它是可接受的),拒绝其它的。该算法一个关键之处在于,合意的要约不会立即被接受,而只是被“抓住”(hold on to),也就是“延迟接受”。要约被拒绝后,医疗机构才可以向另一名医学院学生发出新的要约。整个程序一直持续到没有机构再希望发出新的要约为止,到那个时候,学生们才最终接受各自“抓住”的要约。

注意

  1. 一方A邀约,一方B只能接受或拒绝; 类似问题弄明白哪个是哪一方;
  2. 循环终止条件:所有邀约方A的preference list中的所有B都被邀约,即A中都完成了邀约。

并弄懂4个名词:
matching:还剩单个的,没被匹配
perfect matching: 所有的都匹配了
stable matching:
instable matching: 互相都不喜欢


#典型例子:

关于婚姻稳定匹配问题:这儿有一份别人写的详细解释(带图)http://www.matrix67.com/blog/archives/2976,向原作者致敬!

婚姻问题:
stable perfect matching, 一个只能对一个;
男人有表白权,女人只能选择:暂时接受或拒绝;
women: beter and beter, men: worse and worse;

##有以下3个性质:
1.Woman w remains engaged from the point at which she receives her first proposal; and the sequence of partners to which she is engaged gets better andbetter in terms of her preference list.
2.The sequence of women to whom man m propose gets worse and worse in termsof his preference list.
3.If man m is free at some point in the execution of the algorithm, then there is a woman to whom he has not yet proposed.


#其它类似问题

  1. 公司与求职者问题:(学校与学生 志愿录取问题)
    是一对多,公司可匹配多个求职者,一个求职者只能匹配一家公司。

  2. the junction box switching problem
    对题目的理解:
    可以把输入输出线看做输水管道,每一对输入和输出管道之间都有唯一的交点(看做闸门),如下图:

    每一个输入管道都有不同颜色的水流,让我们设计一个算法,给每一个输入管道选择一个输出管道.
    要求:任意两个不同颜色的水流不能经过同一个闸门。
    这里写图片描述
    对于下图这种选择就是错误的,因为在框起来的位置,水流有交叉:
    这里写图片描述
    其正确的解,如下图,所有的水流都有各自的输出管道,并且任意两个水流都没有出现交叉点(没有经过相同的闸门)
    这里写图片描述
    分析这个问题,如何选择才能避免水流经过相同的闸门。
    对于输入管道而言,每个输入管道都希望尽快的将水流导入输出管道,因为这样,在管道下游将空余出更多的闸门供其它水流经过;
    对于输出管道而言,每个输出管道都希望更晚的接收水流,因为这样,在输出管道的上游将空余出更多的闸门供其它水流经过;
    总而言之,就是输入和输出管道都选择尽量空余出更多的闸门.

因此,我们可以设计一个稳定匹配来解决这个问题。
每个输入管道按照与输出管道的交点的顺序(从上游到下游),对输出管道进行排序;同理,每个输出管道也按相同的方式对输入管道排序;
然后。。。运行稳定匹配算法,其选择条件为上一段讲到的内容

上面使用到的图,是看起来比较“规整”的,实际上,输入管道与输出管道交点的位置(顺序)对于解题没有影响,例如,下面这种
这里写图片描述
需要证明稳定匹配是一个有效的解。
以上问题的描述来自算法课上的助教解释

<think>我们之前讨论了Vue中dcePageScanner组件的一般使用,现在用户询问的是`dcePageScanner::ParsePage matching`的相关信息。从字面看,`ParsePage`和`matching`可能是Dynamsoft Document Capture SDK中与页面解析和匹配相关的功能。 由于用户提供的引用内容并未直接涉及`dcePageScanner::ParsePage matching`,我们需要结合Dynamsoft SDK的文档进行推理: 1. **ParsePage功能**:在Dynamsoft SDK中,`ParsePage`通常指对扫描的文档页面进行结构化解析,例如识别文档中的表格、文本段落等元素。这可能涉及OCR后的版面分析。 2. **matching机制**:可能指文档模板匹配功能,即通过预定义的模板(如发票模板)来提取结构化数据。 因此,在Vue项目中使用`dcePageScanner::ParsePage matching`可能涉及以下步骤: ### 步骤1: 配置模板 在Dynamsoft Admin Portal中创建模板,定义需要提取的数据字段(如发票号、日期等)及其在页面中的位置规则。 ### 步骤2: 在Vue组件中应用模板 ```vue <template> <dce-page-scanner ref="scanner" :licenseKey="license" @scan-complete="onScanComplete" /> </template> <script> export default { data() { return { license: "YOUR_LICENSE_KEY", templateName: "InvoiceTemplate" // 预先设计的模板名称 }; }, methods: { async onScanComplete(result) { // 获取扫描器实例 const scanner = this.$refs.scanner; try { // 使用ParsePage功能解析页面 const parsedPage = await scanner.parsePage(result.scannedImage); // 应用模板匹配 const matchedData = await parsedPage.match(this.templateName); console.log("提取的数据:", matchedData); } catch (error) { console.error("解析失败:", error); } } } }; </script> ``` ### 关键点说明 - **`parsePage`方法**:将扫描的原始图像转换为可解析的文档对象,进行版面分析。 - **`match`方法**:将解析后的页面与指定模板进行匹配,提取结构化数据。 ### 性能优化建议 1. **模板设计技巧**:使用Dynamsoft提供的模板设计工具,通过锚点元素(如固定文字)提高匹配精度。 2. **异步处理**:解析和匹配可能耗时,建议用Web Worker避免阻塞UI。 --- ### 常见问题解决方案 **Q: 匹配精度低怎么办?** A: 调整模板的匹配阈值,或增加更多锚点字段[^1]。 **Q: 如何提取表格数据?** A: 在模板中定义表格区域,并指定列分隔符: ```javascript { name: "PriceTable", type: "table", location: { /* 定位区域 */ }, columnSeparators: [0.3, 0.6] // 相对位置 } ``` --- §§ 相关问题 §§ 1. Dynamsoft中如何设计文档匹配模板? 2. `parsePage`能否处理扭曲的文档图像? 3. 如何批量处理多页文档的匹配任务? [^1]: Dynamsoft官方文档建议通过增加锚点元素提升匹配准确性。 </think>根据您的查询,`dcePageScanner::ParsePage matching` 在 Vue 项目中通常涉及 Dynamsoft Document Capture SDK 的**页面解析和模板匹配功能**。以下是关键信息和使用方法: --- ### 一、`ParsePage matching` 核心功能 1. **文档结构解析** `ParsePage` 分析扫描文档的布局结构(文本块、表格、图像区域),生成结构化 JSON 数据: ```json { "textBlocks": [...], "tables": [ { "rows": 5, "columns": 3, "cells": [...] } ], "images": [...] } ``` 2. **模板匹配 (`matching`)** 通过预定义模板自动提取特定数据(如发票号、日期): ```javascript const template = { "invoiceNumber": { type: "text", location: { x: "15%", y: "10%", width: "20%" }, regex: /INV-\d{8}/ } }; ``` --- ### 二、Vue 项目集成步骤 #### 1. 初始化扫描器与解析器 ```vue <script> import { DcePageScanner } from "vue-dce-page-scanner"; export default { mounted() { this.scanner = new DcePageScanner(); await this.scanner.initEngine("YOUR_LICENSE_KEY"); }, methods: { async scanAndParse() { const result = await this.scanner.scan(); const parsedData = this.scanner.parsePage(result.image); // 关键方法 // 应用模板匹配 const matchedData = parsedData.match(this.invoiceTemplate); console.log("提取的发票号:", matchedData.invoiceNumber); } }, data() { return { invoiceTemplate: { /* 模板配置 */ } } } } </script> ``` #### 2. 模板匹配配置示例 ```javascript invoiceTemplate: { vendorName: { type: "text", location: { top: "12%", left: "5%", width: "30%" } // 相对位置百分比 }, totalAmount: { type: "number", anchor: "Total:", // 通过锚点文本定位 offset: { x: 50, y: 0 } // 向右偏移50像素 } } ``` --- ### 三、解决常见问题方案 #### 问题1: 匹配精度低 **解决方案**: - 添加锚点文本辅助定位: ```javascript dateField: { type: "date", anchor: "Invoice Date:", offset: { x: 20, y: 0 } } ``` - 启用多级匹配策略: ```javascript this.scanner.setMatchingStrategy({ primary: "text-contour", fallback: "pixel-comparison" }); ``` #### 问题2: 动态文档处理 **方案**:结合路由元信息动态加载模板[^3]: ```javascript // 路由配置 { path: "/invoice", component: InvoiceScan, meta: { template: "invoice" } // 路由元信息 } // 路由守卫中加载模板 router.beforeEach((to, from, next) => { if (to.meta.template) { store.dispatch("loadTemplate", to.meta.template); } next(); }); ``` --- ### 四、性能优化技巧 1. **预编译模板** 将模板序列化为二进制格式,减少解析时间: ```javascript const compiledTemplate = this.scanner.compileTemplate(template); localStorage.setItem("invoiceTemplate", compiledTemplate); ``` 2. **Web Worker 异步处理** 避免阻塞 UI: ```javascript const worker = new Worker("@/workers/parse.worker.js"); worker.postMessage({ image: scannedImage, template }); ``` --- ### 数学原理说明 模板匹配的核心是**特征空间映射**: 设文档图像为 $I$,模板为 $T$,匹配过程可表示为: $$\text{match}(I,T) = \underset{x,y}{\mathrm{argmax}} \left( \frac{\sum_{i,j} (I(x+i,y+j) - \mu_I)(T(i,j) - \mu_T)}{\sigma_I \sigma_T} \right)$$ 其中 $\mu$ 为均值,$\sigma$ 为标准差,实现相似度最大化。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值