认知科学-检索练习 4

**认知科学(Cognitive Science)**核心课程 - 学习如何学习:强大的思维工具助你掌握难题 知识卡片 Flashcards Retrieval Practice Hard Start Jump to Easy Technique A counterintuitive strategy that involves starting with harder challenges and then focusing on more straightforward problems. This gives your brain a chance to reflect on the harder challenges. Knowledge Collapse This is a phenomenon where things that made sense before can suddenly seem confusing. It often occurs when the mind is restructuring its understanding, building a more solid foundation. ...

2025-9-10 · 2 分钟 · Atom.X

企业精神骨架:用“Purpose & Principles”精炼概括使命、愿景与价值观

在企业战略沟通、品牌叙事和组织文化建设中,常见一系列关键词:缘起、目标、愿景、使命、价值观。它们看似重叠,实则各有侧重,共同构成一个组织的“精神骨架”。本文系统解析这些概念的内涵、区别与撰写方法,并提出一个简洁有力的英文概括。 一、核心概念定义与辨析 1. 缘起(Origin / Founding Story) 含义:公司为何创立?创始人的初心、时代背景或关键事件。 作用:建立情感连接,赋予品牌人性化温度。 示例:Patagonia 的缘起是创始人 Yvon Chouinard 因攀岩爱好而关注环保。 ✅ 非重复项,属于历史叙事,其他概念多面向未来。 2. 使命(Mission) 含义:我们为什么存在?今天做什么?为谁创造什么价值? 时间维度:当下 → 持续性行动 特点:具体、可操作、聚焦业务本质。 公式: “我们通过【方式】,为【用户/群体】解决【问题】,实现【价值】。” 示例: Google:“整合全球信息,使人人都能访问并从中受益。” Tesla:“加速世界向可持续能源的转变。” ⚠️ 使命 ≠ 口号,应能指导日常决策。 3. 愿景(Vision) 含义:我们希望未来成为什么?世界因我们变成什么样? 时间维度:长期(5–20年甚至更远) 特点:宏大、鼓舞人心、理想化。 公式: “成为……” 或 “让……成为可能” 示例: Microsoft(早期):“让每个家庭、每张办公桌上都有一台电脑。” SpaceX:“让人类成为多行星物种。” ✅ 与使命互补:使命是“做什么”,愿景是“成为什么”。 4. 价值观(Values) 含义:在达成使命和愿景的过程中,坚持哪些行为准则? 作用:指导员工行为、招聘筛选、文化落地。 特点:简洁(通常3–7条)、可衡量、具行为导向。 反例:“诚信、创新、卓越”——太泛,无法执行。 正例(Netflix 文化手册): “自由与责任” “只招成年人” “坦诚反馈” 🔁 注意:此处的“价值观”与哲学中的“价值观”重合,但企业语境更强调行为规范。 5. 目标(Goals / Objectives) 含义:特定时间内要达成的具体成果(如财务、市场、产品指标)。 特点:遵循 SMART 原则(具体、可衡量、可实现、相关、有时限)。 示例: “三年内进入东南亚市场,市占率达15%。” “2026年实现碳中和。” ❗ 关键区别:目标是战术性、可变的;使命/愿景是战略性、稳定的。 ...

2025-8-1 · 2 分钟 · Atom.X

数据结构基础 - 链表操作

单元2 链表操作详解:插入、删除、读取及指针修改次数 以下针对四种链表类型(单链表、双链表、循环单链表、循环双链表),详细说明插入、删除、读取操作步骤及指针修改次数(仅统计已有节点的指针修改,不包括新节点初始化或删除节点释放)。 1. 单链表(Singly Linked List) 节点结构:数据 + next指针(指向后继) 插入操作(在节点A和B之间插入C): 步骤: 创建新节点C,设置 C.next = B(新节点初始化,不计入修改)。 修改A的 next 指针指向C:A.next = C。 指针修改次数:1次(仅修改前驱节点A的指针)。 边界情况: 头部插入:修改头指针指向C(头指针修改不计入节点指针修改)。 尾部插入:同一般情况(修改原尾节点的 next)。 删除操作(删除节点B,A为其前驱): 步骤: 修改A的 next 指针指向B的后继:A.next = B.next。 释放B(不计入指针修改)。 指针修改次数:1次(仅修改前驱节点A的指针)。 边界情况: 删除头节点:修改头指针指向原头节点的后继(头指针修改不计入节点指针修改)。 删除尾节点:修改倒数第二节点的 next 为 null(1次修改)。 读取操作: 仅支持顺序访问:从头节点遍历,时间复杂度 O(n)。 不支持随机访问(无索引)。 2. 双链表(Doubly Linked List) 节点结构:数据 + next指针(指向后继) + prev指针(指向前驱) 插入操作(在节点A和B之间插入C): 步骤: 创建新节点C,设置 C.prev = A, C.next = B(新节点初始化)。 修改A的 next 指针指向C:A.next = C。 修改B的 prev 指针指向C:B.prev = C。 指针修改次数:2次(修改前驱A的 next 和后继B的 prev)。 边界情况: 头部插入:需修改原头节点的 prev 指向C(1次修改)。 尾部插入:需修改原尾节点的 next 指向C(1次修改)。 删除操作(删除节点B): ...

2025-7-22 · 2 分钟 · Atom.X

数据结构基础 - 栈与队列

栈和队列有哪些特殊的操作?栈和队列能解决什么样的问题?用栈和队列这种数据结构,来解决与“先进先出”、“先进后出”有关的实际问题了,如宽度优先搜索、表达式求值等。 类比 - 日常生活普遍规律 如果桌上有一叠盘子,大家都只会拿最上面的那一个。食堂排队的时候,你总是先找到队尾加入,而排在队首的同学打完饭之后就会离开。 类比计算机,也许只需要在线性序列的一端或两端进行操作,对应的就是栈和队列这两种受限的线性表,他们是最简单的基础数据结构,应用也最广泛。 重点:栈的 LIFO(后进先出) 特性,深度优先搜索,理解递归中栈的作用;队列的 FIFO(先进先出)特性,宽度优先搜索。 难点:机械的递归转非递归,简单理解就可以了,不需要掌握;顺序队列的实现假溢出处理。 栈 在C++程序中,栈(Stack) 是一种非常重要的线性数据结构,它遵循 LIFO(Last In, First Out) 原则,即 后进先出。 一、栈的核心特点 后进先出(LIFO):最后被添加到栈中的元素,会最先被移除。 只能在一端操作:所有的插入(入栈/Push)和删除(出栈/Pop)操作都发生在栈的同一端,这一端被称为 栈顶(Top)。 另一端是固定的:栈的另一端称为 栈底(Bottom)。 📌 类比: 想象一个放羽毛球的筒: 你只能从筒的开口(栈顶)放入或取出羽毛球。 最后放进去的球,会最先被拿出来。 二、栈的基本操作 操作 描述 push(x) 将元素 x 压入栈顶 pop() 移除并返回栈顶元素 top() / peek() 返回栈顶元素,但不移除 empty() 判断栈是否为空 size() 返回栈中元素的个数 三、C++ 中如何实现栈? C++ 提供了两种主要方式来使用栈: 1. 使用 STL 容器适配器 std::stack 这是最常用、最推荐的方式。std::stack 是一个容器适配器,默认基于 std::deque 实现。 #include <iostream> #include <stack> int main() { std::stack<int> s; // 创建一个存储 int 类型的栈 s.push(10); // 入栈 s.push(20); s.push(30); std::cout << "栈顶元素: " << s.top() << std::endl; // 输出: 30 s.pop(); // 出栈 std::cout << "新的栈顶元素: " << s.top() << std::endl; // 输出: 20 std::cout << "栈的大小: " << s.size() << std::endl; // 输出: 2 if (!s.empty()) { std::cout << "栈非空" << std::endl; } return 0; } std::stack 的特点: 使用简单,接口清晰。 默认底层容器是 std::deque,也可以指定为 std::vector 或 std::list: std::stack<int, std::vector<int>> s_vec; // 基于 vector std::stack<int, std::list<int>> s_list; // 基于 list 2. 自己用数组或链表实现 虽然不常用,但理解其原理很重要。 ...

2025-7-22 · 3 分钟 · Atom.X

数据结构基础 - 线性表

单元2 下面是一个简洁的 C++ 程序示例,展示了**顺序表(使用 vector)和链表(使用自定义单向链表)**的基本操作对比,包括插入、删除和访问元素: 🧪 顺序表 vs 链表:C++ 示例对比 ✅ 顺序表(使用 std::vector) #include <iostream> #include <vector> using namespace std; int main() { vector<int> seqList; // 插入元素 seqList.push_back(10); seqList.push_back(20); seqList.push_back(30); // 删除元素(删除第二个) seqList.erase(seqList.begin() + 1); // 访问元素 for (int i = 0; i < seqList.size(); ++i) { cout << "顺序表元素[" << i << "] = " << seqList[i] << endl; } return 0; } ✅ 链表(自定义单向链表) #include <iostream> using namespace std; struct Node { int data; Node* next; Node(int val) : data(val), next(nullptr) {} }; void insert(Node*& head, int val) { Node* newNode = new Node(val); newNode->next = head; head = newNode; } void deleteNode(Node*& head, int val) { Node* curr = head; Node* prev = nullptr; while (curr) { if (curr->data == val) { if (prev) prev->next = curr->next; else head = curr->next; delete curr; return; } prev = curr; curr = curr->next; } } void printList(Node* head) { int index = 0; while (head) { cout << "链表元素[" << index++ << "] = " << head->data << endl; head = head->next; } } int main() { Node* head = nullptr; // 插入元素(头插法) insert(head, 30); insert(head, 20); insert(head, 10); // 删除元素(删除值为 20 的节点) deleteNode(head, 20); // 打印链表 printList(head); return 0; } 📊 对比总结 特性 顺序表(vector) 链表(自定义) 插入效率 中间插入需移动元素,较慢 修改指针即可,效率高 删除效率 删除需移动元素 修改指针即可 随机访问 支持 O(1) 下标访问 需遍历,O(n) 内存结构 连续内存,缓存友好 分散内存,灵活扩展 实现复杂度 简单(STL支持) 需手动管理指针 单链表中,做插入数据的操作时,是否需要同时做两处数据的操作? 也就是修改前一个数据的后置链接指向,并增加新数据,例如在数据A和B之间插入C,首先要生成新的数据C,其后驱指针指向B,再修改前一个数据A的后驱指针,删除其与B的链接,建立与C的链接。 此外删除操作也是类似的的需要修改两处,该规则适用于双链表和循环链表。 ...

2025-7-21 · 2 分钟 · Atom.X