Young氏矩阵

m*n的Young氏矩阵定义如下:

  1. m*n的矩阵
  2. 每一行,每一列的数据有序
  3. ∞表示不存在的元素
如:

 2    3    5   12

 4    8  14    

 9  16   ∞     

 ∞   ∞   ∞     

1. 如何在O(m+n)时间复杂度的条件下实现删除最小元素,并使删除后的矩阵保持为Young氏矩阵?

将矩阵类比成“二叉树”:某一元素下边的元素类比为该元素的左孩子,右边的元素类比为右孩子,则Young氏矩阵可看成一个小根堆。

因此,可参考堆排序中的EXTRACT_MIN算法来实现。

为表达方便,以A[i, j]表示以A[i, j]为左上角边界的矩阵,如A[1, 2]为:

  3   5   12

  8  14   

 16  ∞    

  ∞   ∞  

首先,需要实现MIN_HEAPIFY。当A[i+1, j]以及A[i, j+1]均为Young氏矩阵时,使以A[i, j]也为Young氏矩阵,伪代码如下:

MIN_HEAPIFY(A, i, j)
    min_i = i
    min_j = j
    if i + 1 <= m && A[i+1][j] < A[i][j]
        min_i = i + 1
        min_j = j
    if j + 1 <= n &&  A[i][j+1] < A[min_i][min_j]
        min_i = i
        min_j = j + 1
    if min_i != i || min_j != j
        exchange A[i][j] <-> A[min_i][min_j]
        MIN_HEAPIFY(A, min_i, min_j)
EXTRACT_MIN实现伪代码如下:

EXTRACT_MIN(A)
    x <- A[1, 1]
    A[1, 1] = A[last_element_i][last_element_j]
    A[last_element_i][last_element_j] = ∞
    MIN_HEAPIFY(A, 1, 1)
    return x

其中last_element_i 与last_element_j满足:与右下角元素距离最小的非∞元素

确定last_element_i与last_element_j的伪代码如下:

GET_LAST_ELEMENT(A, last_element_i, last_element_j)
    for s <- m + n - 1 to 2
        for i <- m to 1
            if 1 <= s - i <= m
                j = s - i
                if A[i][j] != ∞
                    last_element_i = i
                    last_element_j = j
                    return


2. 在O(m+n)时间内,将一个新元素插入到一个未满的m*n Young氏矩阵中

首先找到与右下角元素距离“最远”的∞元素,将GET_LAST_ELEMENT算法稍作修改即可。其次执行DECREASE_KEY操作,伪代码如下:

DECREASE_KEY(A, i, j, key)
    while i >= 1 and j >= 1
        max_i = i
        max_j = j
        A[i][j] = key
        if i - 1 >= 1 and A[i-1][j] > key
            max_i = i - 1
            max_j = j
        if j - 1 >= 1 and A[i][j-1] > A[max_i][max_j]
            max_i = i
            max_j = j - 1
        if max_i != i or max_j != j
            A[i][j] = A[max_i][max_j]
            i = max_i
            j = max_j
            A[i][j] = key
        else
            A[i][j] = key
            return


3.在O(m+n)时间内,确定一个给定的数是否存在于一个给定m*n的Young氏矩阵

注意到Young氏矩阵右上角元素的特性:该元素大于其左边的同行元素,小于其下边的同列元素。因此,每次用矩阵右上角元素与给定元素比较时,若右上角元素小于给定元素,则可剔除这一行;同理,可剔除这一列。每次比较均可剔除一行或一列,因此,可在O(m+n)的时间内完成任务。

伪代码如下:

FIND_ELEMENT(A, i, j, key)
    if i > m or j < 1
        return -1
    else if A[i][j] == key
        return (i, j)
    else if A[i][j] < key
        return FIND_ELEMENT(A, i + 1, j, key)
    else
        return FIND_ELEMENT(A, i, j - 1, key)

Koh Young AOI(自动光学检测)参数是指Koh Young公司推出的自动光学检测设备的一些特定参数和功能。Koh Young AOI被广泛应用于电子制造业,用于检测PCB(Printed Circuit Board,印刷电路板)上的焊接问题和缺陷。 首先,Koh Young AOI参数中的一个重要指标是分辨率。这一参数表示Koh Young AOI设备能够检测到的最小细节或缺陷的大小。较高的分辨率通常意味着设备可以更准确地检测到更小的问题,提高产品的质量。 其次,Koh Young AOI还可以根据需要调整焦距。焦距的调整可以使设备适应不同尺寸和形状的PCB,以及不同焊接工艺的要求。这种灵活性使得Koh Young AOI可以在不同的生产环境中被广泛应用。 此外,Koh Young AOI还提供了先进的光源技术,如多角度照明和调焦照明。这些技术可以从不同的角度和方向对PCB进行照明,以提高检测的准确性和可靠性。通过使用多角度照明和调焦照明,Koh Young AOI可以更好地检测到锡球、焊接缺陷和其他细微问题,从而避免可能的后续故障。 最后,Koh Young AOI还具备先进的算法和图像处理技术。这些技术可以实时分析和处理从PCB上获取的图像数据,将其与预先定义的标准进行比较,并自动检测和分类不合格的零部件或缺陷。这样,Koh Young AOI可以提高生产效率,减少人工错误的发生,并减少产品的不良率。 总结而言,Koh Young AOI参数包括分辨率、焦距调整、先进的光源技术和图像处理技术。它们共同构成了Koh Young AOI设备的强大功能,可以在电子制造业中有效检测和预防PCB上的焊接问题和缺陷,提高产品质量和生产效率。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值