天洋行空


  • Home

  • About

  • Categories

  • Archives

《图解算法》知识点

Posted on 2018-10-23 | In Data Structures and Algorithms

作者
《图解算法》挺适合算法初学者提前翻阅。晚上翻了一下,也是有些收获。

《图解算法》动态规划

  1. 每个动态规划都从一个网格开始
    当一个问题(1)依赖于子问题的最优解,(2)子问题重叠,(3)问题存在边界,(4)子问题独立,就可以考虑使用动态规划来解决
  2. 不适用的情况
  • 使用动态规划时,要么考虑拿走整件商品,要么考虑不拿,而没法判断该 不该拿走商品的一部分;
  • 动态规划功能强大,它能够解决子问题并使用这些答案来解决大问题。但仅当 每个子问题都是离散的,即不依赖于其他子问题时,动态规划才管用
  1. 步骤 绘制网格,网格的内容,坐标轴
  2. git diff也是动态规划,
  3. 最长公共子序列

《图解算法》图

  • Dijkstra算法
    如果有负权边,就不能使用狄克斯特拉算法。
    节点一旦被处理,就意味 着没有前往该节点的更便宜途径,

《图解算法》K近邻

回归就是预测结果

《图解算法》接下来如何做

布隆过滤器可能出现错报,不会漏报

MAC IDEA配置踩坑记

Posted on 2018-10-20 | In Data Structures and Algorithms

作者

背景

本科时一直使用着Eclipse写Java程序,最近想把Java开发环境转移到IDEA。原因如下:

  • 前段时间适用了一下IDEA,深色背景更让人沉浸;
  • 智能提示比Eclipse强得多,Eclipse最近往往自动补充上非期望的代码;
  • 周围同学也用着它;
  • 虽然也有不少人主张白板写代码,但是有高效的工具更利于我们编写,天下武功唯快不破,我们应该拥抱能提高我们工作效率的工具。
    目前初步配置完成,期间遇到一些问题,此文以作记录。

Project、Module、Package的联系

在 IntelliJ IDEA 中,没有类似于 Eclipse 工作空间(Workspace)的概念,而是提出了Project和Module这两个概念。

Project与Module示意图
如上图所示,Data Structures and Algorithms 是一个Project,它下面的Algorithm4、Leetcode、Test均为Module。

对于 Project,IntelliJ IDEA 官方是这样介绍的:

A project is a top-level organizational unit for your development work in IntelliJ IDEA. In its finished form, a project may represent a complete software solution. A project is a collection of:

  • Your work results: source code, build scripts, configuration files, documentation, artifacts, etc.
    SDKs and libraries that you use to develop, compile, run and test your code.
  • Project settings that represent your working preferences in the context of a project.
  • A project has one or more modules as its parts.

对于 Module,IntelliJ IDEA 官方是这样介绍的:

  • A module is a part of a project that you can compile, run, test and debug independently.
  • Modules are a way to reduce complexity of large projects while maintaining a common (project) configuration.
  • Modules are reusable: if necessary, a module can be included in more than one project.

总而言之

  1. IntelliJ系中的Project相当于Eclipse系中的workspace
  2. IntelliJ系中的Module相当于Eclipse系中的Project
  3. IntelliJ中一个Project可以包括多个Module
  4. Eclipse中一个Workspace可以包括多个Project

workspace里边的project之间是没有关系的独立的,而idea中的project和Module是一种父子的关系,Module之间是一种兄弟关系,或者是一种依赖关系。
好像最开始建立Project产生的src与Module里的src属于同级别。

至于package,在Java中package是一个为了方便管理组织java文件的目录结构,并防止不同java文件之间发生命名冲突而存在的一个java特性。
在eclipse中可以对单独一个包编译运行查看结果。而IDEA似乎是以Module为单位的,默认要把一个Module里的所有包的错误解决好才能运行。若只想运行一个包里的,需要Edit Configurations改好主类+Build,no error checks。

关于存放

这个Project我主要存放数据结构与算法的东西,所以Project名取为DSA。
把不同书本、网站的作为一个个Module。
以Leetcode Module为例,因为每题都是Solution.java,为了防止重名,前期我为每题都建立了包。现在我认为可以按Tag为每题分package,每题可以命名为题号.java而不是Solution; 每个包就含一个main.java。

关于自建库的导入

Alg4书本同时提供了算法库和测试数据,可以把它们加进Module Algorithms4。
algs4.jar是放在Library/Java/Extensions里。(我居然找Library找了那么久。)
具体可以参考如何在Intellij Idea下编译运行《算法》里的程序?

快捷的操作

一些快捷操作

Live Templates的sout、fori最常用,也可以自己添加。

阅读报告Forwarding Strategies for Applications in Named Data Networking_jinyang_20180320

Posted on 2018-10-15 | In Named Data Networking

论文题目

Forwarding Strategies for Applications in Named Data Networking

论文作者、单位

Hila Ben Abraham and Patrick Crowley——Washington University

发表的会议或者期刊

ANCS ’16 March 17-18, 2016, Santa Clara, CA, USA
C类

论文关键字

无

论文摘要原文

Named Data Networking (NDN), an information-centric Internet architecture, introduces a new forwarding model, in which the forwarding plane can choose between multiple interfaces when forwarding a packet. While the forwarding
module brings new opportunities it also introduces challenges when the application’s performance or correctness is affected by a conflict between the application design and the assigned forwarding strategy. In this paper we demonstrate the impact of the forwarding strategy decision on the performance and correctness of NDN applications.

论文摘要中文

作为一个信息中心网络体系,NDN引入了一个全新的转发模型,在转发包时其转发平面可以在多个接口中做出选择。虽然转发模块带来了有点,但也带来了挑战,应用程序的性能或正确性 受到 应用程序设计和分配的转发策略之间冲突的影响。在本文中,我们展示了转发策略决策对NDN应用性能和正确性的影响。

研究问题

不同的转发策略对应用性能和正确性的影响。

研究意义

  1. 在网络不同位置要使用不同的转发策略
  2. 如果存在一歌性能足够出色的转发策略,他就可以作为NDN默认的转发策略

研究内容(算法、方法、技术、模型)

构建了两个场景
case1:不同的producer不同内容,但是发布的name都相同。此时FIB这个prefix会有两个出口,best route只选择其一 ,To solve this, the developer should design the appliction to use producer-specific namespaces instead of a general one.

case2:通知场景

研究结论、主要贡献

命名空间的设计、转发策略、场景都会对应用的性能有影响。

创新点

通知型服务 “同步”案例二 本地有更新,发布Interest
CCNx里重传必须走不同的端口,在CCN同步协议里,参与者不回复这个“通知IPkt”,所以IPkt会重传,但又不能走一个路口,走下一个可行的路口这样就都通知到了。

技术难点

怎么找到一个足够好的forwarding strategy,我们应该针对场景来设计策略吧

对本人工作的启发

  1. 转发决策由 转发策略、请求的名字共同决定
  2. 转发策略需要做
    1. 哪个face转发出去(最好的一个、一些、全部)。
    2. 如何处理不能按时收到data的Interest(Drop、重传、回复NACK包)。
    3. 要记录下游节点工作状态。
  3. 转发策略分类
类别 特点 示例策略
Adaptive 记录face的性能,帮助将来的决策 红黄绿、默认CCNx
Static 严格依据路由协议的决策,不用一些face时需要路由协议来去除 best route(最小cost)

实验结果还有loadsharing、parallel
static策略只有在链路故障时才会改变

4.案例一说明需要设计特定producer的命名,防止重名
5. 记录下这两个场景

进一步研究思路

向别人宣告自己的位置时,通过发Interest来,这就相当于hello包。

指数退避算法

Posted on 2018-10-15 | In Named Data Networking

在看NDN的默认转发策略BestRoute Strategy中提到了指数退避算法,回忆了一下,即为:

在一个共享信道的情况下,当网络上的节点在发生冲突时,每个节点节点等待一定的时间后重新发送。在二进制指数退避算法中,等待时间随着以二为底的指数增长。如果重试失败,那么下次的等待时间将会是上次的等待时间二倍。如果重试次数大于最大重试次数,那么包将从包队列中去除。

BestRoute Strategy:把Interest发给具有最小cost的下一跳,没收到要重传时选择次小cost的下一跳

This strategy forwards a new Interest to the lowest-cost nexthop (except downstream). After that, if consumer retransmits the Interest (and is not suppressed according to exponential backoff algorithm), the strategy forwards the Interest again to the lowest-cost nexthop (except downstream) that is not previously used. If all nexthops have been used, the strategy starts over with the first nexthop.

This strategy returns Nack to all downstreams with reason NoRoute if there is no usable nexthop, which may be caused by: (a) the FIB entry contains no nexthop; (b) the FIB nexthop happens to be the sole downstream; © the FIB nexthops violate scope.

This strategy returns Nack to all downstreams if all upstreams have returned Nacks. The reason of the sent Nack equals the least severe reason among received Nacks.

上传本地项目至Github

Posted on 2018-10-15 | In Git

今天尝试了下Github,先把本科的一些实验报告保存到了github上。同时把一些流程和遇到的问题记录下来。

  • 本地项目上传方法
  • 注意的地方

本地项目上传方法

如果本地写好了程序,想把这个文件夹全部上传到Github上,可以按如下步骤操作:
**1. 进入到你本地项目的根目录下,执行git init **
执行结果
2. git add .
把项目所有文件加入到仓库
2
3. git commit -m "你的注释"
为项目文件添加注释
3
4. 进去Github网站新建项目
写上仓库名、描述,其他保持默认
这里写图片描述
底下的Add.gitgnore 是排除不希望上传对的文件格式
5. git remote add origin https://github.com/TronYY/OR1.git
把本地项目关联到Github,可在如图中复制
这里写图片描述

6. git push -u origin master
上传代码到github远程仓库.

##注意的地方
1. git push -u origin master 出错
网站上新建仓库时,若同时也建了README.md,但本地没有改文件,直接git push -u origin master会提示上传出错,此时改为强制上传参数-f可以上传且不报错。但是建议 :

①先把本地更新成与网站项目一致(即 git clone https://github.com/TronYY/OR1.git)
或者可以通过以下命令使得网站上的与本地的合并git pull --rebase origin master,
注pull=fetch+merge
②修改
③git add .并评论git commit -m "你的注释"
④推送git push -u origin master

这也是项目更新的方法。

2. 默认语言不一致
github默认项目中出现最多次数的后缀为默认语言,可以在网站的仓库下新增 .gitattributes文件,在里面增加
*.js linguist-language=c *.cpp linguist-language=c *.htm linguist-language=c
以上命令相当于把js cpp htm后缀名的统计次数算在c上

##hexo上传文章

cd Desktop/NDN/hexo/blog
hexo new "新文章标题"
hexo g
hexo d

阅读报告_B_[2004][IEEE Wireless Communications ]Routing techniques in wireless sensor networks a survey_jinyang_20181015

Posted on 2018-10-15 | In Named Data Networking

Introduction

分类three categories based on the underlying network structure:

  • flit
  • hierarchical
  • location-based routing

these protocols can be classified

  • multipath-based
  • query-based
  • negotiation-based
  • QoS-based
  • coherent-based depending on the protocol operation.

Each of these scattered sensor
nodes has the capability to collect and route
data either to other sensors or back to an external
BS(s).1

与MANET、蜂窝网络的不同与难点

  1. 数量多,全局地址机制负担大——基于IP的协议不能用。得到数据比知道是谁发的更重要
  2. 需要多个源的数据汇聚
  3. 能量限制
  4. 低移动性
  5. 位置感知很重要
  6. 数据有冗余

本文对网络层的专门研究,描述和分类不同的数据路由方法

WSNs中的路由挑战和设计问题

WSNs中的路由协议

image

扁平路由

  • SPIN

    ADV用于通告新数据,REQ用于请求数据,DATA是实际消息本身。当SPIN节点获得它愿意共享的新数据时,协议开始。它通过广播包含元数据的ADV消息来实现。如果邻居对数据感兴趣,则它发送DATA的REQ消息,并将DATA发送到该邻居节点。然后,邻居传感器节点与其邻居重复该过程。结果,整个传感器区域将接收数据的副本。

  • 定向扩散

    DC范例的主要思想是通过消除冗余,最小化传输次数来组合来自不同来源的数据(网络内聚合);DC路由可以找到从多个源到单个目的地的路由
    image

  • Rumor routing

    flood the events+route the queries (if the number of events is small, and the number of queries is large)
    agents: long-lived packets
    adds the event to its events table and 产生agent
    agent在全网传递,将本地事件的信息传播到远程节点

  • 最小成本转发算法

    假设路由方向已知
    传感器节点不需要具有唯一ID也不需要维护路由表。相反,每个节点保持从其自身到BS的最低成本估计。由传感器节点转发的每个消息被广播到其邻居。当节点接收到该消息时,它检查它是否在源传感器节点和BS之间的最低成本路径上。如果是这种情况,它会将消息重新广播给其邻居。重复该过程直到到达BS。

  • 基于梯度的路由

    当兴趣通过整个网络传播时记住跳数。这样,每个节点可以计算称为节点高度的参数,该参数是到达BS的最小跳数。节点高度与其邻居之间的差异被视为该链路上的梯度。在具有最大梯度的链路上转发分组

  • 信息驱动传感器查询(IDSQ)和约束各向异性扩散路由 (CADR)

    关键思想是查询传感器并在网络中路由数据,以便最大化信息增益,同时最小化延迟和带宽。
    在CADR中,每个节点评估信息/成本目标,并根据本地信息/成本梯度和最终用户要求路由数据;
    IDSQ没有具体定义

  • ACQUIRE

If the precached information is not up-to-date, the nodes gather information from their neighbors within a
lookahead of d hops.

  • 能量感知路由

    该方法需要收集位置信息并为节点设置寻址机制,它保持一组路径而不是以更高的速率维持或实施一条最佳路径。通过一定的概率维护和选择这些路径。该概率的值取决于每条路径可以实现的能耗有多低。

    该泛洪用于发现源/目标对之间的所有路由及其成本,从而构建路由表。丢弃高成本路径,并通过以与其成本成比例的方式选择相邻节点来构建转发表。然后,转发表用于以与节点成本成反比的概率将数据发送到目的地。

  • 随机游走路由协议

    该技术仅考虑节点具有非常有限的移动性的大规模网络
    为了找到从源到其目的地的路线,通过使用众所周知的Bellman-Ford算法的分布式异步版本计算节点之间的距离来获得位置信息或点阵协调。中间节点将根据计算的概率选择更靠近目的地的相邻节点作为下一跳

阅读报告_A [2017][MedHocNet]A Multihop and Multipath Routing Protocol Using NDN for VANETs_20180412

Posted on 2018-09-17 | In Named Data Networking

阅读报告_A [2017][MedHocNet]A Multihop and Multipath Routing Protocol Using NDN for VANETs_20180412


论文题目

A Multihop and Multipath Routing Protocol Using NDN for VANETs

论文作者、单位

Eirini Kalogeiton, Thomas Kolonko and Torsten Braun——Institute of Computer Science, University of Bern, Bern, Switzerland

发表的会议或者期刊

16th Annual Mediterranean Ad Hoc Networking Workshop

论文关键字

NDN, VANETs, Multi-Hop Routing, Multipath Routing

论文摘要原文

One main characteristic of Vehicular Ad Hoc Networks (VANETs) is the intermittent connectivity, which leads to failures of end to end paths between end nodes. Named Data Networking (NDN) is a network paradigm that deals with such problems, since information is forwarded based on content and not on the location of the hosts. Hence, NDN has been proposed in VANET scenarios. In this paper, we propose a multihop and multipath VANET routing algorithm that exploits several paths to achieve faster content retrieval. We create a new routing approach for NDN in VANETs, by introducing new fields to messages and to data structures. Simulation results show that our approach does not only guarantee faster data delivery, but also saves network resources, due to the lack of message retransmissions.

论文摘要中文

车辆自组织网络的一个主要特征是间歇性连通,这导致了端节点之间的点到点路径中断。NDN是解决这类问题的网络范式,因为信息依据内容被转发而不是耕路主机位置。因此,NDN已经在车联网场景下被提出。在本文中,我们提出了一种多跳多路径的车辆网路由算法,其能够探索多条路径以便更快取回内容。通过在消息、数据结构中引入新的字段,我们提出了一种在车联网中的NDN路由方法。仿真结果表明我们的方法不仅确保了更快取回内容,也由于不做消息重传能做到节省网络资源。

研究问题

设计了一种车辆网中的NDN路由算法。

研究意义

  1. 由于考虑车辆,这些连接不稳定,因为车辆的位置可能会在高速行驶时发生不可预测的变化。此外,即使建立了端到端连接,天气条件也可能会干扰用户的信号丢失和/或服务质量和服务质量(冻结视频、延迟安全通知)。

研究内容(算法、方法、技术、模型)

这里写图片描述

这里写图片描述

研究结论、主要贡献

  1. 文章提出了一个路由协议:——先Interest广播,回来时FIB填好,下次传Interest可以根据FIB来;
  2. FIB可能有多个nexthop,根据最低的counter、最低的时延nexthop。。

创新点

技术难点

没有提到怎么解决初始时洪泛。
车子是在移动的,这里FIB也会由于车辆移动而失效,文章其实没有解决移动性问题。

对本人工作的启发

  1. 交通流量产生 network traffic simulation we used SUMO:
    M. Behrisch, L. Bieker, J. Erdmann, and D. Krajzewicz, “Sumo–
    simulation of urban mobility: an overview,” in Proceedings of SIMUL
    2011, The Third International Conference on Advances in System
    Simulation. ThinkMind, 2011.
  2. 文章提到用ndnSIM模拟了无线802.11a,802.11p说在ndnSIM v2.0里不支持,每辆车子的interface也可以定,车辆数目也能够定

进一步研究思路

查阅实验部分ndnSIM的做法

阅读报告A_2010_IJ_Listen First, Broadcast Later Topology Agnostic Forwarding under High Dynamics_jinyang_20170729——LFBL详细

Posted on 2018-09-15 | In Named Data Networking

论文摘要翻译

在本文中,我们重新思考了对于高度动态性无线网络的多跳转发的基本方法。思考的结果是:一种极简的转发协议——“先听后广播”(LFBL)。LFBL是拓扑无关的,也就是说,它没有邻居、路径、下一跳的信息。不靠发送者,LFBL由接收者来做转发决策,为了做到这一点,它只为每个活跃通信断点保留小的、固定量的状态。这样做的结果是,几乎没有什么状态会变得陈旧,也没有预定的路径被打破。频繁的拓扑变化不会削弱性能。LFBL为所有的包使用了专门的广播通信,使得它更契合无线介质、允许更灵活地选择MAC层协议。除了节点的物理移动,LFBL也支持应用层数据的逻辑移动。仿真时,LFBL比AODV表现更好。

C++命名规范

Posted on 2018-09-15 | In C++

规范

  • 文件名 全小写
  • 函数、类、结构体、枚举 每个单词首字母大写
  • 变量 全小写
  • 类成员变量 全小写 ,末尾加_
  • 命名空间 全小写
  • 宏 全大写 加下划线
  • 具体参考 [http://zh-google-styleguide.readthedocs.io/en/latest/google-cpp-styleguide/naming/]

Hello World

Posted on 2018-09-15 | In Hexo

Welcome to Hexo! This is your very first post. Check documentation for more info. If you get any problems when using Hexo, you can find the answer in troubleshooting or you can ask me on GitHub.

Quick Start

Create a new post

1
$ hexo new "My New Post"

More info: Writing

Run server

1
$ hexo server

More info: Server

Generate static files

1
$ hexo generate

More info: Generating

Deploy to remote sites

1
$ hexo deploy

More info: Deployment

1…345
天洋行空

天洋行空

戒骄戒躁

44 posts
7 categories
3 tags
GitHub E-Mail
0%
© 2022 天洋行空
Powered by Hexo
|
Theme — NexT.Pisces v5.1.4