zoukankan      html  css  js  c++  java
  • Truncated Power Method for Sparse Eigenvalue Problems

    在这里插入图片描述

    抱歉,真的没怎么看懂,当然,估计和我现在没法静下心来好好看也有关系。

    算法

    在这里插入图片描述

    想法非常非常简单吧,就是在原来幂法的基础上,每次迭代的时候再加个截断。当然,论文里给出了,为什么这么做的理由,把我弄得晕晕的,但是思想就是这么朴素。现在的问题是:
    1.k怎么选?
    2.初始(x)的选择

    k的选择

    这个我没在论文里找到,但是看数值实验,感觉在k上面是有操作空间的。

    (x)的初始化

    (x)的初始化,是这篇论文的大头,讲了怎么样怎么样就能怎么样怎么样。
    总结就是有如下3种方案:

    • (x=e_j,j=argmax{A_{ii}})实在是简单粗暴啊。
    • 分俩步,第一步先把(k)放大一些,然后进行迭代(初始化估计就用第一种吧),迭代几步之后,把(k)变回来,再继续迭代。
    • (kapprox p)的时候,采用Moghaddam et al. 2006后向选取的方法。

    注:文章还提到,当(A)具有唯一的稀疏的主特征向量,那么,TPower方法能够从(A)的带噪声的观测中,讲该特征向量近似地恢复出来。

    代码

    def You_eig_value(C, x, k):  #幂法
        p = C.shape[1]
        x1 = x     #初始化
        while True:
            x2 = C @ x1
            truncate(x, k)
            x2 = x2 / np.sqrt(x2 @ x2)
            if np.sum(np.abs(x2-x1)) < 0.0001:
                break
            else:
                x1 = x2
                
        return x1
    
    def truncate(x, k): #截断
        
        p = len(x)
        label = np.argsort(np.abs(x))[:p-k]
        x[label] = 0
    
    
  • 相关阅读:
    CODEVS4650 破损的键盘
    洛谷P1656 炸铁路
    洛谷 P3225 [HNOI2012]矿场搭建
    1265 四点共面
    1406: [AHOI2007]密码箱
    1193: [HNOI2006]马步距离
    1800: [Ahoi2009]fly 飞行棋
    1923: [Sdoi2010]外星千足虫
    I
    2017CCPC秦皇岛G ZOJ 3987Numbers(大数+贪心)
  • 原文地址:https://www.cnblogs.com/MTandHJ/p/10527942.html
Copyright © 2011-2022 走看看