数据驱动型的设计03之Queue队列
本系列从数据结构相关的计算机知识出发,从数据的角度提出一些数据驱动的设计思维模式。
总体介绍数据结构与设计的关系,用数据结构的方式来思考设计,并通过几个案例介绍一些大的思路。
介绍数据结构中的链表结构,并探讨设计中可能的链表数据。
第03期
介绍数据结构中的队列结构,及在智能设计中的应用。
Queue
队列
队列是一种先进先出(FIFO:first in first out)的数据结构。它只允许在表的前端进行删除操作,而在表的后端进行插入操作。进行插入操作的端称为队尾,进行删除操作的端称为队头。这期比较简单,基于上期实现的LinkedList结构,来实现Queue,然后为Queue添加插入数据及删除数据的方法:
enqueue
dequeue
删除操作相当于移除LinkedList的head节点,因为Queue只允许在表的前端进行删除操作。那么,我们就拓展下上一期实现的LinkedList类的方法:
LinkedList.prototype.deleteHead=function() {
if (!this.head) {
return null; }
const deletedHead = this.head;
if (this.head.next) {
this.head = this.head.next;
} else {
this.head = null;
this.tail = null;
}
return deletedHead;
}
拓展完LinkedList后,我们实现下enqueue和dequeue,代码如下:
class LinkedList(){...};
class Queue { constructor() {
this.linkedList = new LinkedList();
} enqueue(value) {
this.linkedList.append(value);
} dequeue() {
const removedHead = this.linkedList.deleteHead();
return removedHead ? removedHead.value : null;
}}
下面从其他领域看先进先出的概念:
先进先出
FIFO:first in first out
物流控制有一个存货模式的概念,最常用的是先进先出模式。其实还包括后进先出、随机出库这2种。
物流控制先进先出意思是:生产日期靠前的货物陈列在前面,确保生产日期靠前的商品先销售。
优点:
确保所有商品在正常的保质期内销售,控制损耗。而对于没有保质期的商品,先进先出可以永远保持陈列商品的新鲜。
缺点:
特别对于存货进出量频繁的企业比较繁琐。而且当物价上涨时,会高估企业当期利润和库存存货价值;反之,会低估企业存货价值和当期利润。
回到我们设计领域,举一个人工智能+平面设计的案例:
通过一个按钮,机器按照某种逻辑(比如用户喜好的色彩、或跟文案最匹配的图片)更换图片素材,就是一个队列,可以用队列的数据结构来表示。
设计上,还有没有其他队列的例子?例如,建筑设计里的人流动线、游戏里的场景切换、UI界面的动效等等。
欢迎留言讨论~
待续。
-------------------------------
推荐:
-------------------------------
mixlab社区介绍:
中文:无界社区
英文:mixlab
定位:去中心化、非盈利、全球化
价值观:跨界 开放 互助 学习 创新
愿景:让每个人无限可能
目前,参与mixlab社区共建的人群主要来源于GoogleBrain、微软、华为、阿里鲁班、腾讯、旷视、三角兽、物灵科技、众安保险、美团、360等,还有高校背景人员,包括MIT、CMU、UoM、清华、上交大、同济等等,汇集了机器学习、自然语言处理、物联网、区块链、前端、后端、产品经理、UI设计师、建筑设计师、服装设计师、珠宝设计师、高校教师、CEO、投资人等。
我们没有年龄、经验、背景、地域的限制,不以盈利为目的,帮助每个人用最短的时间把新知识内化为个人的技能,让每个人都能产生无限可能。
mixlab期待您的加入!
赞赏的方式可以是点广告~