`
linest
  • 浏览: 151150 次
  • 性别: Icon_minigender_1
  • 来自: 内蒙古
社区版块
存档分类
最新评论

读代码-TopKStringPatterns

 
阅读更多
package org.apache.mahout.fpm.pfpgrowth.convertors.string;
public final class TopKStringPatterns implements Writable

用于存储pattern,进行merge找到top k的pattern

核心,pair链表,每个pair由pattern构成的string链表和long型support值组成。
即 <pattern,值> 链表
private final List<Pair<List<String>,Long>> frequentPatterns;



读写。格式 链表总长 pattern长 support值 pattern所含字段
  @Override
  public void readFields(DataInput in) throws IOException {
    frequentPatterns.clear();
    int length = in.readInt();
    for (int i = 0; i < length; i++) {
      List<String> items = new ArrayList<String>();
      int itemsetLength = in.readInt();
      long support = in.readLong();
      for (int j = 0; j < itemsetLength; j++) {
        items.add(in.readUTF());
      }
      frequentPatterns.add(new Pair<List<String>,Long>(items, support));
    }
  }
  
  @Override
  public void write(DataOutput out) throws IOException {
    out.writeInt(frequentPatterns.size());
    for (Pair<List<String>,Long> pattern : frequentPatterns) {
      out.writeInt(pattern.getFirst().size());
      out.writeLong(pattern.getSecond());
      for (String item : pattern.getFirst()) {
        out.writeUTF(item);
      }
    }
  }



merge操作,将两个TopKStringPatterns 合并生成新TopKStringPatterns
两个TopKStringPatterns 各取一个进行先support,再pattern长,再pattern比较
赢者进入新TopKStringPatterns ,输者跟下一个比较。
总体效果跟堆类似。

疑问:二者预先经过了降序排序???
  public TopKStringPatterns merge(TopKStringPatterns pattern, int heapSize) {
    List<Pair<List<String>,Long>> patterns = new ArrayList<Pair<List<String>,Long>>();
    Iterator<Pair<List<String>,Long>> myIterator = frequentPatterns.iterator();
    Iterator<Pair<List<String>,Long>> otherIterator = pattern.iterator();
    Pair<List<String>,Long> myItem = null;
    Pair<List<String>,Long> otherItem = null;
    for (int i = 0; i < heapSize; i++) {
      if (myItem == null && myIterator.hasNext()) {
        myItem = myIterator.next();
      }
      if (otherItem == null && otherIterator.hasNext()) {
        otherItem = otherIterator.next();
      }
      if (myItem != null && otherItem != null) {
        int cmp = myItem.getSecond().compareTo(otherItem.getSecond());
        if (cmp == 0) {
          cmp = myItem.getFirst().size() - otherItem.getFirst().size();
          if (cmp == 0) {
            for (int j = 0; j < myItem.getFirst().size(); j++) {
              cmp = myItem.getFirst().get(j).compareTo(
                otherItem.getFirst().get(j));
              if (cmp != 0) {
                break;
              }
            }
          }
        }
        if (cmp <= 0) {
          patterns.add(otherItem);
          if (cmp == 0) {
            myItem = null;
          }
          otherItem = null;
        } else if (cmp > 0) {
          patterns.add(myItem);
          myItem = null;
        }
      } else if (myItem != null) {
        patterns.add(myItem);
        myItem = null;
      } else if (otherItem != null) {
        patterns.add(otherItem);
        otherItem = null;
      } else {
        break;
      }
    }
    return new TopKStringPatterns(patterns);
  }
分享到:
评论

相关推荐

    内鬼V4 cat版 scratch版.sb3

    这是一个未做好的作品,但还原了绿色周!!!

    2024-2030中国mRNA癌症疫苗和治疗市场现状研究分析与发展前景预测报告 Sample.pdf

    QYResearch是全球知名的大型咨询公司,行业涵盖各高科技行业产业链细分市场,横跨如半导体产业链(半导体设备及零部件、半导体材料、集成电路、制造、封测、分立器件、传感器、光电器件)、光伏产业链(设备、硅料/硅片、电池片、组件、辅料支架、逆变器、电站终端)、新能源汽车产业链(动力电池及材料、电驱电控、汽车半导体/电子、整车、充电桩)、通信产业链(通信系统设备、终端设备、电子元器件、射频前端、光模块、4G/5G/6G、宽带、IoT、数字经济、AI)、先进材料产业链(金属材料、高分子材料、陶瓷材料、纳米材料等)、机械制造产业链(数控机床、工程机械、电气机械、3C自动化、工业机器人、激光、工控、无人机)、食品药品、医疗器械、农业等。 邮箱:market@qyresearch.com

    国家开放大学数据库应用技术第三次形考作业3

    使用TOP和CASE的查询。写出实现如下查询的SQL语句。  (18) 列出“数据库基础”课程考试成绩前三名的学生的学号、姓名、所在系和考试成绩。  (19) 查询Java考试成绩最低的学生的姓名、所在系和Java成绩。  (20) 查询选修了Java的学生学号、姓名、所在系和成绩,并对所在系进行如下处理:   当所在系为“计算机系”时,显示“CS”;   当所在系为“信息管理系”时,显示“IS”;   当所在系为“通信工程系”时,显示“CO”;   对其他系,均显示“OTHER”。

    2024-2030中国巴比妥酸市场现状研究分析与发展前景预测报告 Sample.pdf

    QYResearch是全球知名的大型咨询公司,行业涵盖各高科技行业产业链细分市场,横跨如半导体产业链(半导体设备及零部件、半导体材料、集成电路、制造、封测、分立器件、传感器、光电器件)、光伏产业链(设备、硅料/硅片、电池片、组件、辅料支架、逆变器、电站终端)、新能源汽车产业链(动力电池及材料、电驱电控、汽车半导体/电子、整车、充电桩)、通信产业链(通信系统设备、终端设备、电子元器件、射频前端、光模块、4G/5G/6G、宽带、IoT、数字经济、AI)、先进材料产业链(金属材料、高分子材料、陶瓷材料、纳米材料等)、机械制造产业链(数控机床、工程机械、电气机械、3C自动化、工业机器人、激光、工控、无人机)、食品药品、医疗器械、农业等。 邮箱:market@qyresearch.com

    python期末大作业-春节电影信息爬取与数据可视化分析系统源码+详细注释+答辩PPT

    python期末大作业-春节电影信息爬取与数据可视化分析系统源码+详细注释+答辩PPT专为大学期间课程设计和期末大作业开发的高分设计项目,可作为高分课程设计和期末大作业的参考,含有代码注释小白也可看的懂,有能力的小伙伴也可以在此基础上进行二开,项目代码完整下载即可运行。 python期末大作业-春节电影信息爬取与数据可视化分析系统源码+详细注释+答辩PPT专为大学期间课程设计和期末大作业开发的高分设计项目,可作为高分课程设计和期末大作业的参考,含有代码注释小白也可看的懂,有能力的小伙伴也可以在此基础上进行二开,项目代码完整下载即可运行。 python期末大作业-春节电影信息爬取与数据可视化分析系统源码+详细注释+答辩PPT专为大学期间课程设计和期末大作业开发的高分设计项目,可作为高分课程设计和期末大作业的参考,含有代码注释小白也可看的懂,有能力的小伙伴也可以在此基础上进行二开,项目代码完整下载即可运行。 python期末大作业-春节电影信息爬取与数据可视化分析系统源码+详细注释+答辩PPT专为大学期间课程设计和期末大作业开发的高分设计项目,可作为高分课程设计和期末大作业的参考。

    Java+EE项目开发教程 教材源码.zip

    Java+EE项目开发教程 教材源码.zip

    成人马术服装,全球前十强生产商排名及市场份额(by QYResearch).pdf

    QYResearch是全球知名的大型咨询公司,行业涵盖各高科技行业产业链细分市场,横跨如半导体产业链(半导体设备及零部件、半导体材料、集成电路、制造、封测、分立器件、传感器、光电器件)、光伏产业链(设备、硅料/硅片、电池片、组件、辅料支架、逆变器、电站终端)、新能源汽车产业链(动力电池及材料、电驱电控、汽车半导体/电子、整车、充电桩)、通信产业链(通信系统设备、终端设备、电子元器件、射频前端、光模块、4G/5G/6G、宽带、IoT、数字经济、AI)、先进材料产业链(金属材料、高分子材料、陶瓷材料、纳米材料等)、机械制造产业链(数控机床、工程机械、电气机械、3C自动化、工业机器人、激光、工控、无人机)、食品药品、医疗器械、农业等。 邮箱:market@qyresearch.com

    2024年印度布地奈德市场机会及渠道调研报告-样本.docx

    2024年印度布地奈德市场机会及渠道调研报告-样本

    纸巾包装机,前16大企业占据全球66%的市场份额调查数据(2023).pdf

    QYResearch是全球知名的大型咨询公司,行业涵盖各高科技行业产业链细分市场,横跨如半导体产业链(半导体设备及零部件、半导体材料、集成电路、制造、封测、分立器件、传感器、光电器件)、光伏产业链(设备、硅料/硅片、电池片、组件、辅料支架、逆变器、电站终端)、新能源汽车产业链(动力电池及材料、电驱电控、汽车半导体/电子、整车、充电桩)、通信产业链(通信系统设备、终端设备、电子元器件、射频前端、光模块、4G/5G/6G、宽带、IoT、数字经济、AI)、先进材料产业链(金属材料、高分子材料、陶瓷材料、纳米材料等)、机械制造产业链(数控机床、工程机械、电气机械、3C自动化、工业机器人、激光、工控、无人机)、食品药品、医疗器械、农业等。 邮箱:market@qyresearch.com

    Dijkstra算法详解.pdf

    在计算机科学中,Dijkstra算法是一种用于在带权图中查找单源最短路径的算法。这个算法由荷兰计算机科学家Edsger Dijkstra在1959年提出,并以其名字命名。Dijkstra算法主要适用于边权值非负的有向图或无向图。本文将详细阐述Dijkstra算法的原理、步骤、实现方式以及在实际应用中的意义。 二、算法原理 Dijkstra算法的基本思想是以起始点为中心向外层层扩展,直到扩展到终点为止。在扩展过程中,始终保持已求出最短路径的节点集(称为已知集)到未求出最短路径的节点集(称为未知集)之间的最短路径长度。算法通过不断更新未知集中节点的最短路径长度,逐步逼近实际的最短路径。 三、算法步骤 初始化:将所有节点的最短路径长度设为无穷大(或一个较大的数),起始节点的最短路径长度设为0。同时,将所有节点标记为未访问状态。 选择未访问节点中路径长度最短的节点u,并标记为已访问状态。 对于节点u的每一个相邻节点v,如果通过节点u到达节点v的路径长度比当前已知的到达节点v的最短路径长度还要短,那么更新到达节点v的最短路径长度。 重复步骤2和3,直到所有节点都被访问过为止。

    基于 c++在rk3588/3588s上运行的yolov5s简单demo(142帧/s)

    【作品名称】:基于 c++在rk3588/3588s上运行的yolov5s简单demo(142帧/s) 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【项目介绍】: 演示 系统需安装有OpenCV 下载Releases中的测试视频于项目根目录,运行build-linux_RK3588.sh 可切换至root用户运行performance.sh定频提高性能和稳定性 编译完成后进入install运行命令./rknn_yolov5_demo 模型所在路径 视频所在路径/摄像头序号 部署应用 参考include/rkYolov5s.hpp中的rkYolov5s类构建rknn模型类 多线程模型帧率测试 使用performance.sh进行CPU/NPU定频尽量减少误差 测试模型来源: yolov5s-relu

    职业学院结业证换毕业证申请表.docx

    职业学院结业证换毕业证申请表.docx

    学校附属单位缴款收费规定(财务管理制度).docx

    学校附属单位缴款收费规定(财务管理制度).docx

    基于用户的协同过滤(UserCF)与基于内容(CB)的推荐算法的后融合+源代码+文档说明

    - 不懂运行,下载完可以私聊问,可远程教学 该资源内项目源码是个人的毕设,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! <项目介绍> 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。 --------

    IEC 62443-3-3与等保2-0的对比分析

    IEC 62443-3-3与等保2_0的对比分析

    基于树搜索&最大剩余空间的三维装箱算法

    基于树搜索&最大剩余空间的三维装箱算法的三维装箱算法 (1)一键运行 (2)包含可视化代码 (3)装载率85%以上 (4)求解速度较快 (5)代码清晰有注释

    Screenshot_2024-06-05-15-53-15-181_com.chaoxing.mobile-edit.jpg

    Screenshot_2024-06-05-15-53-15-181_com.chaoxing.mobile-edit.jpg

    xray1.9.11(高级版)

    渗透测试使用的漏洞扫描工具xray,渗透测试人员需要可以下载,若是用来进行不当违法用途,本人概不负责!!!

    2024-2030中国LED广告牌市场现状研究分析与发展前景预测报告 Sample.pdf

    QYResearch是全球知名的大型咨询公司,行业涵盖各高科技行业产业链细分市场,横跨如半导体产业链(半导体设备及零部件、半导体材料、集成电路、制造、封测、分立器件、传感器、光电器件)、光伏产业链(设备、硅料/硅片、电池片、组件、辅料支架、逆变器、电站终端)、新能源汽车产业链(动力电池及材料、电驱电控、汽车半导体/电子、整车、充电桩)、通信产业链(通信系统设备、终端设备、电子元器件、射频前端、光模块、4G/5G/6G、宽带、IoT、数字经济、AI)、先进材料产业链(金属材料、高分子材料、陶瓷材料、纳米材料等)、机械制造产业链(数控机床、工程机械、电气机械、3C自动化、工业机器人、激光、工控、无人机)、食品药品、医疗器械、农业等。 邮箱:market@qyresearch.com

    UV数码喷墨打印机,全球前16强生产商排名及市场份额(by QYResearch).pdf

    QYResearch是全球知名的大型咨询公司,行业涵盖各高科技行业产业链细分市场,横跨如半导体产业链(半导体设备及零部件、半导体材料、集成电路、制造、封测、分立器件、传感器、光电器件)、光伏产业链(设备、硅料/硅片、电池片、组件、辅料支架、逆变器、电站终端)、新能源汽车产业链(动力电池及材料、电驱电控、汽车半导体/电子、整车、充电桩)、通信产业链(通信系统设备、终端设备、电子元器件、射频前端、光模块、4G/5G/6G、宽带、IoT、数字经济、AI)、先进材料产业链(金属材料、高分子材料、陶瓷材料、纳米材料等)、机械制造产业链(数控机床、工程机械、电气机械、3C自动化、工业机器人、激光、工控、无人机)、食品药品、医疗器械、农业等。 邮箱:market@qyresearch.com

Global site tag (gtag.js) - Google Analytics