这是用户在 2025-5-7 12:22 为 https://app.immersivetranslate.com/html/ 保存的双语快照页面,由 沉浸式翻译 提供双语支持。了解如何保存?

CT week9.1 2025.04.28 Mon AM 10:32 ・ 79Minutes 51seconds ZHANG YIWEN
CT 第 9 周第 1 节 2025.04.28 周一 上午 10:32 ・ 79 分钟 51 秒 张一文


Attendees 1 00:03 우리 지난 시간에 중간에 뭐 이것저것 뭐가 많으니까 일주일이 되게 길게 가는 것 같아 지난 시간에 한 건데 한 달쯤 전에 한 것 같이 느껴지는데 이 알고리즘 얘기를 지금 좀 하고 있는데요. 결국은 사실 컴퓨터 계산적 사고법이라는 게 알고리즘으로 이렇게 비결이 되는 그런 거가 없지 않아 있을 수밖에 없는데 그러다 보니까 알고리즘 얘기를 좀 아무래도 길게 하게 되는 것 같습니다.
出席人数 1 00:03 上次课程中间有很多内容,感觉一周过得很长。感觉这是一个月前的内容,现在正在讨论这个算法。事实上,计算思维确实存在一些与算法相关的诀窍,所以我们不得不详细地讨论算法。


Attendees 1 00:49 알고리즘은 이렇게 간단간단하게 그냥 한 번씩 이렇게 쓱 보고 지나가는 것처럼 해가지고 될 문제는 아니긴 한데 어차피 여러분들 뭐 계속 내내 하게 되실 거니까 그냥 소개하는 정도로만 정렬 알고리즘 중에 선택 정렬 알고리즘이라는 거 살펴봤었고요. 어떤 식으로 하는 알고리즘인지 그리고 정렬 알고리즘의 여러 가지 종류들 쭉 얘기 그러니까 그냥 그냥 한번 그냥 정의만 한번 쭉 봤었죠. 그리고 알고리즘 선택할 때 이런 것들을 고려해서 선택을 해야 된다라는 얘기가 간단하게 한번 얘기를 했었고요. 그다음에 퀵 정렬이라는 거하고 퀵 정렬이라는 게 어떻게 되는 건지 한번 보고 여기서 살펴본 선택 정렬과 퀵 정렬이 어떤 어떻게 다른지 같은 예를 놓고 두 가지 정렬 방식으로 정렬을 했을 때 결과가 어떻게 되는지 결과는 동일할 거고 이 과정이 어떻게 되는지 그거를 한번 쭉 봤습니다.
与会者 1 00:49 算法不是这样简单地浏览一遍就能解决的问题,但无论如何您们将来会持续接触,所以我们只是简单介绍一下排序算法。我们之前看过选择排序算法,了解了它的工作方式,并讨论了各种排序算法。简单地定义并浏览了一遍。然后讨论了选择算法时需要考虑的因素。接下来我们看了快速排序,了解了它的工作原理,并比较了选择排序和快速排序,在同一个例子中使用这两种排序方式,结果是相同的,我们还研究了它们的具体过程。


Attendees 1 02:05 그리고 이제 경로 탐색 알고리즘 쪽으로 시작을 하다가 이제 여기서 그냥 끝냈는데 여기서부터는 여기 우리 다시 교재 쪽으로 돌아와서 이쪽을 보면서 가는 걸로 순서를 좀 바꿀게요. 어차피 이쪽에 경로 탐색이 이쪽에서 교재 쪽에서 다시 들어오기 때문에 여기서 따로 얘기를 할 어쩌다 보니까 지난 시간에 여기서 멈췄는데 멈춘 게 나쁘지는 않았던 것 같아요. 그래서 오늘은 다시 교제 쪽으로 돌아와서 교재에 챕터 8에 있는 내용을 한번 쭉 보는 걸로 하겠습니다. 여기 어차피 뒷부분에 이진 탐색하고 거리 경로 탐색 쪽에 얘기가 같이 나오면서 중복되는 사항들이 좀 있으니까 이쪽에서 보는 걸로 그렇게 하겠습니다.
与会者 1 02:05 我们开始研究路径搜索算法,然后就此结束。现在我们将回到教材,改变一下顺序。无论如何,路径搜索部分将在教材中重新介绍,所以我们暂时在这里停止讨论。上次停止的地方看起来还不错。今天我们将回到教材,浏览第 8 章的内容。反正后面部分涉及二分查找和距离路径搜索,有一些重复的内容,我们就从这里开始。


Attendees 1 03:18 여기서는 이제 자료 구조서부터 해가지고 알고리즘 얘기까지 쭉 망라를 했는데 자료 구조 지금 아직 강의 안 들으신 분도 계실 테니까 겸사겸사 강의 들으신 분들도 많으실 것 같긴 한데 겸사겸사 그냥 한번 쭉 개념적인 것만 어차피 나오니까 한번 쭉 같이 보는 걸로 하죠. 기왕 있으니까 좀 중복이 좀 되긴 하겠지만 자료 구조란 무엇인가 정의에 대해서 한번 먼저 사물을 정리하는 것과 같은 프로그램에서도 자료를 여러 가지 구조로 정리하는 거 이렇게 얘기를 했습니다. 사실은 자료 구조라는 말을 처음 들었을 때 저는 무슨 제일 먼저 떠올렸던 게 이 말을 예전에 제가 처음 이 말을 들었을 때 제일 먼저 떠올랐던 게 사실은 도서관 책이었거든요. 뭘 그러니까 자료가 무슨 구조가 있다고 자료 구조라는 말이 있지라고 생각을 했었는데 내용의 굉장히 심오하죠.
在这里,我们从数据结构开始,一直讲到算法,覆盖了全部内容。因为可能还有一些人没有听过数据结构的讲座,所以我们就一起来看看基本概念。反正都会提到,不如一起梳理一下。尽管可能会有些重复,但让我们先来看看数据结构的定义。就像整理物品一样,在程序中也是用各种结构来组织数据。事实上,当我第一次听到"数据结构"这个词时,最先想到的是图书馆的书。我当时以为数据结构就是指某种资料的组织方式,但其内涵实际上非常深奥。


Attendees 1 04:23 굉장히 많은 양을 다루고 있고 물론 우리가 일상적으로 사용하는 것들도 자료 구조의 일환이기 때문에 좀 협의의 의미로 협의로 좀 가면은 간단한 예를 들 수는 있겠지만 그냥 뭐 수첩에 적는 거 책을 싸놓는 거라든가 상점에서 물건을 구입하는 이런 내용들 이런 것들도 자료 구조의 일환으로 생각할 수는 있을 겁니다.
它涉及非常庞大的内容,而且我们日常使用的很多事物也是数据结构的一部分。如果从狭义角度来看,可以举一些简单的例子,比如在笔记本上记录、摆放书籍,或者在商店购买物品等,这些都可以被视为数据结构的一种形式。


Attendees 1 04:56 이런 것들도 다 자료 구조의 일환으로 생각할 수는 있는데 이제 그래도 우리는 이제 소위 학문이라는 걸 하는 입장이니까 자료 구조에 대해서 일상적인 것들보다도 좀 더 깊게 넓은 의미로 들어가면서 좀 더 깊게 들어가는 그런 식으로 진행을 해야 되겠죠. 그중에서도 이제 컴퓨터 관련된 얘기를 자유 구조 중에서도 컴퓨터 관련된 거에 좀 포커스를 맞춰서 얘기를 하게 되는데 컴퓨터 관련된 자료 구조 중에는 여러 가지 구조의 형태가 있는데 그중에서 리스트 연결 리스트 트리 구조 그래프라든가 스텝 그다음에 해싱 테이블 해싱 테이블 쪽으로 가면은 자료 구조에서도 해싱 테이블 다루나 어때요? 여기 자료 구조 강의 들으신 분 패싱 테이블까지 다루죠. 안 다루나 다루죠. 예 해시 테이블 쪽 가면은 이제 좀 이런 거 저런 거 해시 테이블 안 다룰 리가 없지 그렇죠 안 다룰 리가 없지 질문이 좀 바보 같을 것 같은 말 할 수는 없는 부분이죠.
虽然这些也可以被视为数据结构的一部分,但是我们现在站在学术的立场,因此我们需要比日常更深入、更广泛地探讨数据结构。其中,我们将重点关注与计算机相关的数据结构。在计算机相关的数据结构中,存在多种结构形式,如链表、树结构、图、栈,以及哈希表。说到哈希表,在数据结构课程中是否会涉及?这里的数据结构课程会涉及到哈希表吗?是的,哈希表是肯定会讲解的,不可能不涉及。这个问题可能听起来有点傻,但确实是这样。


Attendees 1 06:09 본인이 해야 되는 거니까 핵심 테이블 쪽 가면은 이제 좀 조금 이제 복잡도가 생기죠. 예 평범한 자료 구조가 평범한 얘기는 아니구나 그냥 그냥 이렇게 서술형으로 줄여버리는 그런 얘기는 아니구나라는 게 이제 현실이 좀 와닿죠. 이쪽으로 가기 시작하면 앞에서 얘기했던 거 예를 들어서 물건을 쌓아놓는 게 우리가 스텝이라는 생각 얘기를 하죠. 그다음에 매표소에서 줄 서는 거 매표소뿐만 아니라 물건을 사기 위해서 줄 서는 게 이런 게 q 구조에 해당이 될 거고요. 그다음에 리스트 적는 거는 우리 할 일 리스트 적는 거 그런 거고 영어 사전 찾는 게 탐색 구조 같은 데 해당될 거고 영어 사전 단어 사전이나 이런 거에 어떤 탐색을 해서 뭔가를 찾아내는 그런 구조를 갖는 걸 얘기를 하는 거죠. 그다음에 지도 같은 경우는 그래프에 해당될 거고 조직 또는 3에 해당되는 이런 구조를 가지게 될 겁니다.
当涉及哈希表时,复杂度会增加。是的,普通的数据结构并不是那么简单,不能用简单的描述性语言来概括。这一点现在已经变得很清晰了。比如,我们之前讨论过堆栈,就像在售票处排队一样,不仅仅是在售票处,购物时排队也属于队列结构。列出待办事项列表,查找英语词典中的单词都属于搜索结构,就是通过某种方式在词典或类似的地方查找某些内容。而像地图这样的情况则属于图结构,组织结构也可能是树状结构。


Attendees 1 07:12 이렇게 구분을 해서 우리가 자료 구조의 기본 여러 구조들 중에 대표적인 거 몇 가지를 이렇게 소개를 좀 해드렸습니다. 그중에서 리스트 리스트는 순서가 있는 데이터의 모음을 저장한 목록이라고 돼 있는데 저 순서라는 부분이 사실 조금 의미가 조금 해석에 따라서는 좀 순서가 없을 수도 있나라는 것도 생각을 좀 해볼 필요는 있는데요. 리스트의 순서가 없이 그냥 무작위로 이렇게 있는 것도 그건 자료 구조가 아닌 게 아닌가 이 말은 아니죠. 예 어쨌든 뭔가 에 정렬을 해서 어떤 목적으로 정렬이 되면은 이제 그게 자료 구조가 의 일환이 되는 거니까 사실 정리가 됐다 안 됐다는 현재 보는 관점에서의 얘기지 그게 꼭 정리가 그러니까 어떤 걸로부터 정리가 안 돼 있다고 해서 정리가 안 된 거다 이렇게 얘기하기에는 좀 단어적인 의미가 좀 다르거든요.
参与者 1 07:12 我们这样区分,并为大家介绍了数据结构中几个代表性的基本结构。其中,列表是存储有序数据集合的列表,但关于"顺序"这个部分,根据不同的解释,可能也是没有顺序的。这是值得思考的。列表没有顺序,就随机排列,这并不意味着它不是数据结构。是的,无论如何,如果按某种目的进行排序,那就成为数据结构的一部分。事实上,是否整理取决于当前的观点,不能简单地说因为没有从某处整理就算是未整理,因为词义是不同的。


Attendees 1 08:28 우리가 신호와 자궁을 얘기할 때도 정보와 자궁을 얘기할 때도 지금 제가 하는 말은 여러분 귀에 들리면은 정보가 되는 말이긴 한데 옆 강의실 사람들이 듣기에는 지금 제 소리는 잡음이 될 겁니다. 그렇죠. 그러니까 이 신호라는 게 그걸 수신하는 입장에서 어떻게 받아들이는가에 따라서 정보가 될 수도 있고 똑같은 것도 정보가 될 수도 있고 잡음이 될 수도 있고 해 보는 관점에 따라 다른 거니까 이것도 내가 순서 내가 원하는 순서대로 정리가 돼 있으면 정리가 돼 있는 건데 원하는 순서대로 안 돼 있으면은 사실 정리가 안 돼 있는 거나 마찬가지죠. 그냥 막 지죽박죽 섞여 있는 거하고 별다를 게 없죠. 네 그러니까 정의에 대한 것들 순서에 대한 것도 조금 생각을 해볼 필요가 있습니다. 저 단어가 주는 의미에 대해서 순서가 있는 데이터의 모음이라고만 이렇게 딱 돼 있는데 이게 의미하는 게 뭔지에 대해서 조금 생각을 해볼 필요는 있죠. 동일한 데이터 타입의 요소들을 순차적으로 나열하여 저장한 거.
参与者 1 08:28 当我们谈论信号和子宫时,当我说的话传入你们的耳朵时,这确实是信息,但对于隔壁教室的人来说,我现在的声音可能就是噪音。对吧。也就是说,这个信号取决于接收方如何接收,同样的东西可能会成为信息,也可能成为噪音,这取决于观察的角度。如果按照我想要的顺序排列,那就是已整理的,如果不是按照我想要的顺序,实际上就和没有整理没什么两样,就像是乱糟糟地混在一起。是的,所以需要对定义和顺序多思考一下。仅仅说是"有序数据集合"这个词所传达的含义是什么,值得我们思考。就是按顺序存储同类型数据元素。


Attendees 1 09:40 예 그렇죠 예 동일한 데이터 타입 그러니까 이 동일한 데이트 타입이라는 것도 뭔가 기준에 의해서 정해진 거지 그냥 절대적으로 뭔가가 있는 내용은 아니죠. 그리고 인덱스를 통해서 접근할 수 있고 리스트의 특징으로 순서 중복, 허용 가변성 이런 것들을 얘기를 합니다. 이거는 뭐 기본적인 사항들이니까 한번 보시면은 개념적으로 뭔지에 대해서는 어렵지 않게 이해가 가실 겁니다.
与会者 1 09:40 是的,就是这样。是的,相同的数据类型,所以这个相同的数据类型是由某些标准决定的,并不是绝对的。并且可以通过索引访问,列表的特征包括顺序、允许重复、可变性等。这些都是基本情况,一旦看一下,概念上会很容易理解。


Attendees 1 10:21 예를 들면은 요일 같으면은 월화 수목 금 토요일 그다음에 월 같으면은 1월 2월, 3월 이런 것들 이런 것들이 이제 예가 되겠죠. 리스트의 예가 되겠죠. 그러니까 리스트라는 게 사실 우리 일상적으로 많이 보고 사용하고 그러는 것들이니까 특별하게 다르게 해석할 건 없는데 다만 앞에서 말씀드린 대로 우리가 일상적이지 않은 데이터들을 그러니까 뭔가 전문적으로 뭔가 다루는 데이터는 일상적으로 이렇게 이미 우리가 정리하기도 전부터 요일 같은 경우는 이렇게 아예 정리하는 걸로 그렇게 정해져 있죠 예 정해져 있죠. 근데 내가 만약에 격일로 뭘 한다 그러면은 이 격일로 뭘 한다든가 아니면은 월요일마다 뭘 한다든가 이런 식이면 얘기가 또 달라지는 리스트가 나오죠. 그런 것들 우리가 일상적으로 보는 리스트 말고 데이터를 다루는 입장에서 생각하는 리스트는 또 좀 의미가 다르니까 좀 확장을 해서 생각을 하시기 바라겠고요.
与会者 1 10:21 比如说,如果是星期,就是星期一、星期二、星期三、星期四、星期五、星期六,再比如月份,就是 1 月、2 月、3 月等等,这些都可以作为列表的例子。因为列表是我们日常生活中经常看到和使用的,所以没有特别复杂的解释。但是,正如之前提到的,对于一些非日常的数据,比如专业处理的数据,像星期这样的数据早已被系统化。但是,如果我要做一些隔天的事情,或者每周一做某事,那么列表就会有所不同。所以,我们日常看到的列表和从数据处理角度看的列表是有些不同的,希望大家能够扩展思考。


Attendees 1 11:29 여기는 일상에 대한 예가 있어가지고 약간 설명이 일반적인 설명으로 좀 축소를 시켜놨는데 우리는 좀 확대할 필요성은 있죠. 예를 들어서 이렇게 이거를 좀 설명을 했습니다. 예를 들어서 이런 이런 예가 있다고 보면 영화 제목입니다. 이거는 조금 오래된 흥행 영화 리스트라고 돼 있는데 조금 아마 시간이 돼서 지금은 순위가 많이 바뀌었을 텐데 예 아바타가 1이고 타이타닉 이렇게 쭉 영화 순위를 이렇게 해놨습니다. 여기에 인덱스를 이렇게 잡아놨고요. 인덱스하고 순위하고는 내용상으로는 별 차이 없어 보이지만은 용도나 이런 것들은 확실히 좀 다르죠. 여기서 인덱싱 하는 거는 이게 라벨 붙이는 것 같은 그런 의미인데요. 식별하기 의한 숫자입니다. 0부터 시작하면 보통 0부터 시작하죠. 0부터 시작을 안 할 수도 물론 있겠지만은 일반적으로 0부터 시작을 하는 걸로 그렇게 합니다.
参会者 1 11:29 这里有一些关于日常生活的例子,我们对其进行了一些概括性的说明,但我们确实需要进一步扩展。例如,我们这样解释。比如,这是一个电影标题。这是一个有点过时的票房电影列表,现在排名可能已经发生了很大变化。例如,阿凡达排在第 1,泰坦尼克号等电影排名如此。我们在这里设置了索引。虽然索引和排名在内容上看起来没有太大区别,但在用途上确实有很大不同。这里的索引就像是贴标签,是为了识别的数字。通常从 0 开始,当然也可能不从 0 开始,但一般都是从 0 开始。


Attendees 1 12:53 그럼 인덱싱은 인덱스를 사용하는 거를 인덱스 진이라고 하는데 0부터 시작을 한다고는 하는데 이 순위가 이 인덱스 인덱싱 하는 이 순서하고 반드시 일치하는 건 아니죠. 예 지금은 이렇게 있으니까 마치 이 순위와 같은 오더로 이렇게 인덱스를 해야 하는 것처럼 설명은 돼 있지만은 인덱싱은 예를 들어서 첫 글자 알파벳 첫 글자 순서로 붙일 수도 있고요. 예 인덱싱 하는 거는 어떤 기준에 따라서 다르게 들어갈 수 있는 거니까 여기서는 이제 얘를 이렇게 들어놓은 거가 이렇게 순서대로 하다 보니까 마치 이렇게 인덱스를 붙이는 거가 정석인 것처럼 보일 수도 있는데 그건 아닙니다. 예 인덱스는 말 그대로 그냥 갖다 붙여놓은 겁니다. 어떤 방식으로 뭔가를 붙여놓은 것뿐이에요 이 아바타라고 하는 거를 주먹을 온전히 쓰지 않고 온전히 쓰는 게 쉽게 얘기하면 귀찮으니까 인덱스를 붙여서 쓰는 겁니다.
参会者 1 12:53 那么索引,使用索引的称为索引技术,虽然说从 0 开始,但这个排名和索引的顺序并不一定完全一致。现在看起来好像索引必须按照这个排名的顺序,但索引可以按照其他标准来分配。例如,可以按照字母表首字母的顺序来排列。索引是根据不同标准可以有不同分配方式的。在这里,因为按照顺序排列,可能看起来像是索引的标准方式,但事实并非如此。索引只是简单地附加上去。就是以某种方式贴上标签而已。打个比方,使用阿凡达这个词时,为了避免每次都完整使用,我们就用索引来简化。


Attendees 1 14:18 이렇게 인덱싱하는 작업을 해서 리스트를 관리를 하고요. 이거는 만약에 이게 1월 달 리스트다. 근데 2월달에 다시 조사를 했더니 얘네 둘이 순서가 바뀌었다 그러면은 여기가 제로가 되고 여기가 1이 되겠죠 그죠 그렇게 이게 순서가 바뀌면은 인덱스윙을 새로 하는 게 아니라 인덱싱을 처음에 붙여놨던 걸 그대로 그냥 쓰는 겁니다. 그러면 이제 이 인덱스 순서가 여기가 바뀌게 되겠죠. 그런 식으로 이제 사용을 하는 거니까요. 저 앞에 순위는 이게 이게 바뀔 게 아니고 이게 바뀌어야 되죠. 자 이거 숫자가 바뀌면 안 되니 이게 바뀌어야 되죠.
出席者 1 14:18 这样进行索引操作来管理列表。如果这是 1 月的列表,但在 2 月再次调查时发现它们的顺序发生了变化,那么这里将变为零,这里将变为 1。当顺序发生变化时,并不是重新进行索引,而是继续使用最初附加的索引。这样,索引的顺序就会在这里发生变化。因此,使用方式是这样的。前面的排名不应该改变,而是应该改变这个。数字不能变,所以这个必须改变。


Attendees 1 15:18 여기는 뭐 그냥 인덱스 붙이는 어떤 프로그램 하는 거를 좀 소개를 해 놨는데 여기 이렇게 말로 써 있는 것보다 이걸로 보시는 게 이렇게 이제 대입을 시켜놓는 거죠. 이렇게 이런 식으로 이제 해서 배열 함수 쓰듯이 이렇게 개입을 시켜놓고 사용을 하는 겁니다. 이러면은 이제 0번은 아바타가 되고 1번은 타이파닉이 되고 이런 식으로 라벨링 인덱싱을 붙여놓는 거죠. 그 라벨 붙여놓는 거랑 같은 바코드 같은 거 붙여놓는 거나 라벨을 붙여놓는다거나 이런 식으로 생각을 하시면은 훨씬 더 편하게 생각이 되실 겁니다. 큰 어떤 의미를 두고 하는 내용은 아니니까요. 그럼 이렇게 배열 함수 쓰듯이 이렇게 사용을 할 수가 있을 겁니다. 무비 리스트라고 해서 이렇게 문자로 리스트를 리스트를 만들었죠. 그러면은 이렇게 그래서 우리가 이거는 마치 변수 선언하는 것처럼 그런 식으로 돼 있죠. 그래서 이거 0 하면은 이게 프린트가 되고 이렇게 방식으로 프린트가 되게끔 될 겁니다.
出席者 1 15:18 这里只是介绍了一些关于索引的程序。与其用文字描述,不如直接看这个。现在进行赋值。像使用数组函数一样,进行赋值并使用。这样,0 号就成为了头像,1 号就是泰坦尼克号,以此类推,给它们贴上标签索引。这就像是贴上标签或条形码一样,想象起来会更加容易理解。这并没有什么特别深奥的含义。这样就可以像使用数组函数一样使用了。比如电影列表,我们这样用字符创建了一个列表。这就像声明变量一样。所以当我们使用 0 时,它就会打印出来,以这种方式打印。


Attendees 1 16:42 코드를 이제 굳이 이제 의사 코드로 이제 지금 설명을 좀 해놨는데 저런 식으로 할 수 있을 겁니다. 이거는 반복 구조로 앞에 프린트 다섯 번 저렇게 0 1, 2 3 4 하는 거를 반복 구조로 써서 이렇게 여기는 파일문으로 썼는데 파일문을 써서 0부터 5까지 리스트를 프린트하는 걸로 이렇게 지금 해놓은 거죠. 이런 식으로 하면은 리스트 프린트가 되겠죠. 이 두 가지 예 같은 거죠. 지난번에도 여러 번 말씀드렸지만은 이거 두 개 딱 놓고 어느 게 더 프로그램 잘한 거냐 그러면 대부분 이거 선택해요. 그죠? 그렇지 않습니다. 그렇지 않아요. 이거 선택했다 이게 맞았다 틀렸다를 얘기하는 게 아니라 이게 프로그램 참 잘한 겁니다라고 얘기하는 거는 그냥 교과서에 나오는 얘기고요. 그리고 여러분들한테 하는 얘기고 학생들한테 하는 얘기입니다. 실제로는 이걸 이걸로 프로그램 짜는 사람들은 적지 않습니다. 이렇게 간단한 경우는 왜냐하면 굳이 화인물을 돌려 이유가 없으니까
参会者 1 16:42 现在我已经用伪代码解释了代码,可以这样做。这是一个重复结构,前面打印五次,这样从 0 到 4。我在这里用文件语句写了这个,用文件语句打印从 0 到 5 的列表。这样就可以打印列表了。这是两个例子。就像我之前多次说过的,如果比较这两种方法哪个编程更好,大多数人会选择这个。对吗?事实并非如此。重点不在于选择哪个是对是错,而是在教科书和对学生说的话中,说这个编程做得很好。实际上,程序员很少这样做,因为在这种简单的情况下没有必要绕这么大圈子。


Attendees 1 18:05 반복문을 돌린다는 게 프로세스에 따라서 선택을 해야 될 부분들이 있을 수 있거든요. 이거는 그냥 순차적으로 그냥 쭉 내려가면서 시행하는 거잖아요. 하나씩 근데 얘는 반복을 시켜야 되니까 카운터도 사용을 해야 되고 프린트 문이야 어차피 쓰는 거지만 카운터도 사용해야 되고 증가하는 이것도 써야 되고 예 그리고 파이브 온이 반복을 하면서 발생하는 상황들을 고려를 해야 되는 경우가 있어요. 이거 이거 지금 되게 간단해서 그런데 복잡한 게 프로그램이 좀 복잡하게 들어 있거나 이 중간에 뭐가 어떤 다른 함수를 콜해서 써야 되거나 이런 경우가 있을 때는 살짝 한 번은 짚고 넘어가야 될 부분이라는 말씀이에요. 너무 교과서적으로만 판단하실 일은 아닙니다. 그리고 이런 어떤 함수나 구물 이런 걸 썼다고 해서 프로그램이 고급 고급지고 뭐 이런 거 아니거든요.
参会者 1 18:05 根据不同的进程,可能需要选择不同的循环方式。这个只是顺序执行,一步一步往下走。但是这个需要循环,所以需要使用计数器,打印语句肯定是要用的,还需要使用计数器并让它递增。当程序比较复杂,或者中间需要调用其他函数时,可能需要考虑循环中发生的各种情况。不要仅仅从教科书的角度来判断。仅仅使用某个函数或结构并不意味着程序就变得高级了。


Attendees 1 19:11 예 프로그램의 고급짐은 실행이 얼마나 깔끔하고 효율적으로 잘 되느냐로 결정하는 거지 저렇게 막 문장을 막 화려하게 쓴다고 해서 고급 지는 건 아닙니다.
与会者 1 19:11 程序的高级之处在于执行是否干净和高效,仅仅用华丽的句子书写并不意味着程序就高级了。


Attendees 1 19:31 이거는 약간 컴퓨터 메모리 관련된 얘기로 약간 좀 보긴 했는데 어쨌든 우리가 컴퓨터 가지고 하는 얘기를 한 거니까 한번 보시죠. 리스트를 컴퓨터에서 어떻게 저장을 하느냐라는 얘기를 잠깐 좀 하고 지나가겠습니다. 예 메모리는 여러분들 알다시피 바이트로 구성이 돼 있죠. 바이트 단위로 여기 말이 조금 이상한데 바이트 2로 구성된다가 이제 이건 논리적인 걸 얘기하는 물리적인 게 아니고 논리적인 걸 얘기하는 거예요. 바이트 단위로 구성이 돼 있습니다. 그죠? 예 그리고 0번부터 시작하는 숫자 주소가 매겨져 있고 이거는 예 예 이게 이게 자꾸 이런 제가 자꾸 이런 걸 보면은 그냥 이렇게 넘어가야 되는데 자꾸 제가 여기 이거를 딴 짓을 자꾸 걸어가지고 이것 때문에 참 말들이 좀 많기는 한데 메모리 주소가 0봉부터 시작하는 경우는 거의 없거든요.
与会者 1 19:31 这是与计算机内存相关的一些讨论。无论如何,我们在讨论计算机,让我们来看看。我们来简单讨论一下如何在计算机中存储列表。众所周知,内存由字节组成。这里的表述有点奇怪,说是由字节 2 组成,这是在讨论逻辑层面,而不是物理层面。内存是按字节单位组织的,对吧?并且从 0 开始编号地址,这个嘛,我总是会不自觉地在这里多说几句,尽管我应该直接略过。实际上,几乎不存在从 0 开始编号的内存地址。


Attendees 1 20:48 일반적으로 그런데 이제 예 하여튼 이거 이제 간접 주소 사용을 해서 이제 이렇게 되면 이렇게 되는 건 맞는데 그러니까 저렇게만 생각을 하면 여러분들이 저렇게 생각하면 어차피 나중에 업데이트를 하긴 해야 되는데 이제 저 같은 경우는 자꾸 이거를 이제 실질적인 거를 자꾸 얘기를 하다 보니까 오히려 그게 여러분들한테 혼동을 주는 경우가 좀 생기는 것 같아서 말을 좀 아끼게 되긴 하는데, 그럼에도 자꾸 저런 거 보면은 그냥 못 넘어가고 좀 그래요. 예 이건 여러분들 여기 이 시간에 할 얘기는 아니고 여러분들 컴퓨터 관련돼서 메모리 쪽 관련돼서 이제 하시면은 이게 제가 무슨 얘기인지 아마 금방 아실 텐데 하여튼 뭐 그렇습니다. 예 그리고 바이트는 8개의 비트가 모인 거죠. 8개를 원 바이트라고 하죠. 그다음에 여기 말 나온 김에 여러분 워드 같은 경우는 워드는 몇 피트입니까? 예 워드는 몇프트인지 모르죠. 워드 같은 경우는 컴퓨터 프로세서에 따라서 다릅니다.
一般来说,现在是的,总之这个现在使用间接寻址,这样就会这样,这是对的。所以如果你们这样想的话,无论如何最后都要更新,但是我这种情况是不断地讨论实际情况,反而可能会给你们造成一些混淆,所以我会少说一些。尽管如此,看到这种情况还是会忍不住。是的,这不是你们现在要讨论的内容,与计算机相关,与内存相关,我相信你们马上就会明白我在说什么。总之就是这样。是的,然后字节是由 8 个比特组成的。8 个称为一个字节。接下来,顺便问一下,对于字这种情况,字有多少位?是的,你们可能不知道字有多少位。字的大小取决于计算机处理器。


Attendees 1 22:02 그렇죠 워드는 1 바이트가 될 수도 있고 2바이트가 될 수도 있고 3바이트가 되는 경우는 좀 드물지만 4바이트가 될 수도 있고 예 그렇죠 예 16비트 32비트가 될 수도 있고 그렇습니다. 워드는 정해진 길이가 아니에요. 프로세서나 심지어는 프로그램 저기 운영 체제에 따라서도 다를 수가 있습니다. 여러분들 지금 사용하시는 윈도우 10일 같은 경우에 32비트 운영 체제 쓰고 어떤 건 64비트 쓰고 이런 거 지금 있죠 지금 대부분 물론 64비트 쓰고 있는데 예 요게 워드의 단위입니다. 지금 여러분들 쓰고 계신 인베딩 시스템 쪽에서는 현재 64비트까지 가는 경우는 좀 드물고 그건 완전히 하위 레벨 쪽으로 가는 거고 보통 많이 쓰는 게 16비트 32비트 이 정도 요즘은 32비도 꽤 많이 쓰죠. 다루기 편한 거는 16비가 제일 편하긴 합니다. 여러 가지 면에서 메모리 사이즈는 이렇게 얘기를 하고 있고요.
对的,字可能是 1 个字节,也可能是 2 个字节,3 个字节的情况比较少,但可能是 4 个字节。是的,可能是 16 位、32 位等。字并没有固定的长度。它可以根据处理器甚至操作系统而不同。你们现在使用的 Windows 10 有 32 位操作系统,有些是 64 位,现在大多数确实在使用 64 位。这就是字的单位。在你们现在使用的嵌入式系统中,目前很少达到 64 位,那是完全进入底层的情况,通常使用的是 16 位、32 位。现在 32 位也被广泛使用。从各方面来说,16 位是最方便的。就内存大小而言是这样的。


Attendees 1 23:14 메모리에 저장되는 방식 이렇게 메모리 이게 아까 얘기한 대로 이거를 메모리 어드레스라고 합시다. 어드롤레스
与会者 1 23:14 在内存中存储的方式,这样的内存,这是之前讨论过的,我们称之为内存地址。地址


Attendees 1 23:33 어드레스 어드레스 그리고 이제 0번부터 팔 이렇게 쭉쭉쭉 어드레스라고 하면은 메모리에 지금 리스트를 저장을 하면 이런 식으로 저장이 되겠죠. 0번 어드레스 0번에 아바타 저장하고 물론 이게 꼭 이 순서대로 아닐 수도 있고 이게 이제 역순으로 저장이 될 수도 있고 그거는 저장하는 어드레스 지정하는 방식에 따라서 다른 거니까 이렇게 저장이 돼 있을 저장을 하게 될 겁니다. 리스트를 저장하면은 리스트뿐만 아니라 데이터를 저장할 때 다 저런 식으로 저장을 하죠.
与会者 1 23:33 地址,地址,然后现在从 0 开始,像这样一直延伸,如果说是地址的话,当我们将列表存储在内存中时,就会这样存储。0 号地址,0 号存储头像,当然,这可能不一定是严格按照这个顺序,也可能是反向存储,这取决于地址指定的方式。数据存储时,无论是列表还是其他,都会以这种方式存储。


Attendees 1 24:16 이 인덱스 같은 경우에 이렇게 인덱스를 주고 메모리 주소에다가 거기에 해당되는 주소에 각각 저장을 하고 이렇게 리스트를 순차적으로 저장을 해서 저장한 거를 우리가 배열 함수라는 이름으로 사용을 하게 되는 경우가 많습니다. 그러니까 만약에 이거를 배열 함수 선언을 안 하고 데이터를 그냥 이렇게 저장을 해놓잖아요. 그러면은 컴퓨터 프로세서는 데이터를 꼭 이렇게 순서대로 순서대로 이 순서대로만 저장하지 않습니다. 요 아바타가 여기에 들어갈 수도 있고 여기쯤에다가 저장해 놓을 수도 있어요. 아바타는 그리고 타이타닉은 여기다 갖다 놓을 수도 있고 그는 메모리 공간을 그냥 정해진 공간 내에서 아무 데나 막 써놓습니다. 아무 데나 막 써놔요. 컴퓨터는 그리고 나서 그거를 꺼냈을 때만 순서대로 꺼내서 쓰고 하는 식으로 사용을 합니다. 우리가 컴퓨터 같은 경우에 조각 모음이나 이런 거 할 때 보면은 정리하는 그게 폼이 있어요. 예 그런 거가 지금 말씀드리는 이 내용에 해당이 됩니다.
在这种索引的情况下,我们将索引分配给内存地址,并在相应的地址上分别存储,然后按顺序存储列表。我们经常以数组函数的名称来使用这种存储方式。如果不声明数组函数,只是这样存储数据,计算机处理器并不总是按照这种顺序存储数据。这个头像可能会存储在这里,也可能存储在那里。头像和泰坦尼克号可能会被存储在不同的位置。计算机只是在预定的内存空间内随意写入数据。只有在取出数据时,才会按顺序使用。当我们进行磁盘碎片整理时,可以看到这种整理的形式,这就是我现在所描述的内容。


Attendees 1 25:24 근데 이제 배열 함수를 쓰게 되면은 아무래도 좀 한 곳에 모아서 저장을 하는 이거는 뭔가 서로 연관성이 있는 데이터구나 가능하면 한 곳에 모아서 저장해야지라는 식으로 이제 컴퓨터에서 메모리에 저장할 때 좀 가능하면 한 곳에 모아서 저장하는 그런 좀 약간의 중요도를 좀 올리는 거죠. 대열 함수를 쓸 때는 그런 식으로 이제 저장을 좀 하게 됩니다.
当使用数组函数时,我们倾向于将相关数据集中在一个地方存储。这意味着在计算机内存中存储时,尽可能地将相关数据集中在一起,从而提高一些重要性。使用大型数组函数时,就是以这种方式存储的。


Attendees 1 26:00 리스트 2개를 저장을 동시에 하게 되면은 이런 식으로 저장을 하게 되는 거죠. 약간 이렇게 중간에 이거 근데 사실 이거는 지금 약간 이제 좀 약간 옛날 방식으로 설명을 좀 해놓은 거고요. 요즘은 이렇게 중간에 굳이 공간을 잘 빼지 않습니다. 예전에는 데이터 저장할 때 뭔가 이렇게 데이터 구분되는 데이터들을 저장할 때는 중간에 블랭크를 좀 넣었었어요. 이러저러한 이유들로 요즘은 이거 블랭크 넣는 거를 잘 하지 않아요. 그냥 메모리 꽉꽉 채워서 꾹꾹꾹 눌러 담습니다. 그래도 아무런 문제가 없기 때문에 예전에는 요 블레이크를 좀 집어넣어서 영역 구분을 좀 하고 데이터 간의 혼선을 좀 막고 이런 물리적인 그런 방식을 좀 썼는데 요즘은 워낙 성능이 좋아져갖고 굳이 그렇게까지는 잘 안 하고 있기는 하는데 어쨌든 간에 메모리 저장할 때 이렇게 여기 지금 예로 이렇게 든 것처럼 이렇게 좀 블랭크를 어느 정도 사용을 하기도 합니다.
当同时保存两个列表时,就会这样存储。这种方式稍微有点是旧的表述方式。现在,我们不再在中间特意留出空间。以前在存储数据时,对于需要区分的数据,会在中间插入一些空白。由于各种原因,现在很少这样做了。我们直接将内存填满,紧紧压缩。因为这不会造成任何问题。过去,我们会插入一些空白来区分区域,防止数据之间的混淆,使用这种物理方式。但现在性能已经很好,所以通常不再这样做。尽管如此,在内存存储时,还是会像刚才的例子那样,在一定程度上使用一些空白。


Attendees 1 27:10 넉넉하게 왜냐하면은 요기 0번부터 4번까지 저장을 어벤저스까지 저장을 했는데 요다음 영화 목록이 또 새로 생길 수가 있잖아요. 그거 들어오면은 여기를 꽉 채우다 보면은 걔는 여기에다가 저장을 해야 되는데 그러면은 이제 관리가 좀 복잡해지니까 혹시 모를 리스트 업데이트를 위해서 일종의 TBD 같은 거를 두는 거죠. 혹시 모를 그래서 공간을 살짝 마련을 해놓는 겁니다. 예 혹시나 싶어가지고 그렇게 이제 하기도 하고 그럽니다. 저거는 컴퓨터 시스템에 관련된 프로그램에 관련된 거니까 반드시 저렇게 하는 건 아니고요. 필요에 따라서는 공간을 좀 이렇게 확보를 해놓는 거죠.
为什么要宽松一些呢?因为从 0 到 4 号已经存储了复仇者联盟,但是下一个电影列表可能会新建。如果把空间填满,新的电影就必须存储在其他地方,这会使管理变得复杂。所以为了可能的列表更新,我们会预留一些空间,类似于一个 TBD(待定)的位置。这是为了以防万一,预留一些空间。这与计算机系统和程序相关,但并非绝对必要。根据需要,我们会确保一些空间。


Attendees 1 28:11 인덱스 얘기가 나오니까 이제 이 얘기가 조금씩 나오는데 여러분들 저기 컴퓨터 메모리 주소 지정 방식에 대해서 혹시 강의가 강의를 들으신 분은 아시겠지만은 인덱스 간접 주소 지정 방식이라는 게 있습니다. 예 지금 그거를 얘기를 하고 있거든요. 여기서 근데 이
当提到索引时,大家可能对计算机内存寻址方式有所了解。在这里,我们正在讨论间接寻址方式。是的,现在我们正在讨论这个问题。在这里,但是


Attendees 2 28:42 이게 이
这个是


Attendees 1 28:43 주소 지정 방식을 얘기를 하면은 이제 얘기가 3천% 가니까 단어 요 용어는 쓰지 않고 그냥 그냥 이렇게 일반적인 것처럼 이렇게 그냥 설명을 해놔서 그러는데 사실은 지금 저기 있는 얘기가 인덱스를 사용하는 간접 주소 지정 방식의 관련된 사항을 얘기를 하고 있는 겁니다. 메모리 주소 지정 방식의 인덱스를 써가지고 직접 주소를 지정하지 않고 인덱스를 사용해서 간접 주소를 간접적으로 주소를 지정하는 그런 방법이 있는데 보시면은 배열의 이름을 알고 있으면 배열의 기준 주소를 알 수 있다 이렇게 돼 있죠. 그러니까 실제로 저장돼 있는 주소를 가리키지 않고 인덱스 가지고 실제 인덱스를 가지고 인덱스가 마치 실제 메모리에 저장돼 있는 주소인 양 사용을 하는 겁니다. 그러면은 그거를 프로세서가 알아서 실제 주소하고 연결을 시켜주는 그런 방식을 취하는 거죠. 오히려 설명이 조금 저기한데 하여튼 이거는 이제 이쪽으로 가서 보시면은 이 말들이 뭔 얘기를 하고 있는지 좀 더 쉽게 이해가 되실 겁니다.
讲述寻址方式时,现在可以说 3000%,所以不使用这些术语,而是以一种普通的方式进行解释。实际上,这里讨论的是使用索引的间接寻址方式的相关内容。通过使用内存寻址方式的索引,不直接指定地址,而是使用索引间接地指定地址。可以看到,如果知道数组的名称,就可以知道数组的基准地址。实际上,它不是直接指向存储的地址,而是使用索引,就像使用实际存储在内存中的地址一样。然后,处理器会自动将其与实际地址连接起来。虽然解释有点复杂,但当你进一步了解时,会更容易理解这些内容。


Attendees 1 30:05 여기 컴퓨터 구조 컴퓨터 공학을 컴퓨터 공학이 하는 사람들이니까 이거는 하시게 되실 겁니다.
由于这是计算机体系结构和计算机科学,所以这些内容是计算机科学从业者会学习的。


Attendees 1 30:18 아무튼 배열이라는 이름을 써서 이제 여러분들이 배열 함수 배열을 선언을 해서 변수를 배열로 저장을 하게 되면은 이런 형태로 저장이 됩니다. 그래서 변경하는 게 비교적 조금 어렵습니다. 아까 말씀드린 대로 이렇게 어떤 구역을 딱 정해 잡아놓고 쓰다 보니까 리스트가 새로 들어오면은 만약에 여기를 꽉 채워서 썼으면은 꽉 채워서 썼으면은 새로 또 리스트가 업데이트돼서 새로운 리스트가 하나 집어넣으려면은 얘네들을 밑으로 밀어내서 채워야 되죠. 근데 그런 식으로 또 메모리를 쓰는 건 굉장히 복잡해집니다. 그런 문제들 때문에 여러분들이 배열 함수 배열 변수를 선언을 할 때 지금 내가 쓰고 있는 배열이 8개다 그러면 8개 딱 맞춰서 이제 보통 쓰게 되잖아요. 근데 혹시라도 아홉 번째가 필요하다 그러면은 이제 얘기가 좀 달라지죠. 예. 그러면 이제 복잡해지죠. 좀 밑에 안에 있는 프로그램들도 다 손봐야 되고 그런 경우가 생기는 것처럼 여기도 마찬가지로 그 얘기를 하고 있는 겁니다.
与会者 1 30:18 总之,使用数组名称,当您声明数组并将变量作为数组存储时,它会以这种形式存储。因此,更改起来相对较困难。正如我之前所说,当您固定某个区域并使用时,如果列表已满,而新的列表需要更新并插入一个新列表,则需要将现有元素向下推移以腾出空间。但以这种方式使用内存会变得非常复杂。因此,当您声明数组变量时,通常会精确地声明所需的大小,例如 8 个。但如果需要第九个,情况就会变得不同了。是的,这会变得复杂,底层程序也需要相应地进行调整,这就是正在讨论的情况。


Attendees 1 31:36 근데 그걸 이제 수정하고 이러는 게 복잡해서 그렇지. 한 번 딱 잡아놓으면은 메모리를 딱 잡아놓고 쓰기 때문에 여러 가지로 장점이 많죠. 처리하는 방법도 좀 편하고 빠르고
与会者 1 31:36 正是因为修改起来复杂,一旦固定下来,就会直接占用内存,所以在多方面都有优点。处理方法也相对方便和快速。


Attendees 1 32:01 배열에 대해서 계속 좀 더 얘기를 하면은 이렇게
与会者 1 32:01 继续谈论关于数组的内容


Attendees 1 32:24 이 자리가 바뀌었어 PT 자리가 바뀌어서 그러네요. 뭐가 지워진지 알고 깜짝 놀랐네. 이 PT 짜리가 바뀌어서 그럽니다. 배열 기본 구조는 이렇게 생겼다라는 거를 앞에서 나왔어야 되는데 이게 뒤쪽에 나오니까 갑자기 말이 딴 데로 간 것처럼 예 이렇게 배열 구조는 이렇게 특징을 가지고 있다 이런 얘기입니다. 배열에 관련된 알고리즘을 조금 더 얘기를
与会者 1 32:24 位置发生了变化。幻灯片的位置变了,我吓了一跳,不知道什么东西被删除了。因为幻灯片位置变了。数组的基本结构本应该在前面出现,但现在却在后面,这让对话感觉突然偏离了主题。是在讨论数组结构的特点。稍微多谈一些与数组相关的算法


Attendees 1 32:59 해보면요.
如果你们看一下的话。


Attendees 1 33:08 이런 예를 들면은 여러분들한테는 조금 직접적인 예가 되기는 하는데 또 한편으로는 좀 불편한 예가 되기도 하죠. 성적을 하나씩 꺼내서 평균을 계산하는 알고리즘에 예를 들어서 얘기를 하는 겁니다. 대열을 저렇게 6개 리스트짜리를 만들어서 이렇게 인덱스를 붙였죠. 이렇게
举这样的例子对你们来说可能是一个稍微直接的例子,但另一方面也可能是一个有点不舒服的例子。我举个例子,比如计算逐个拿出成绩并计算平均分的算法。像这样创建了 6 个列表并给它们添加了索引。就这样。


Attendees 1 33:39 인덱스를 붙여서 사용을 하는 거를 예를 들어서 보는 겁니다.
与会者 1 33:39 举例说明如何使用附加索引。


Attendees 1 33:51 성적을 하나씩 꺼내서 합계를 구하는데 배열의 크기가 크다면은 반복 구조를 사용하는 게 아무래도 용이하겠죠. 그래서 이렇게 초기값 초기화 이거 반드시 써줘야 됩니다. 초기값 넣는 거 변수에다 초기값 넣는 거 0이든 1이든 반드시 선언해 줘야 됩니다. 저거 잊어버리지 마세요 할 때 그리고 아도 마찬가지고요. 그래서 배열의 크기가 얼마냐에 따라서 저렇게
与会者 1 33:51 逐个提取成绩并计算总和,如果数组很大,使用重复结构会更加方便。所以必须这样初始化初始值。在变量中放入初始值,无论是 0 还是 1,都必须声明。请不要忘记这一点,对于 a 来说也是如此。因此,根据数组的大小,就像这样


Attendees 1 34:28 저기 잘못됐죠.
参与者 1 34:28 那里出错了。


Attendees 1 34:36 이거 투 스나오네 그죠?
参与者 1 34:36 这是两个来着,对吧?


Attendees 1 34:58 이거는 여러분들 많이 보던 반복문의 기본 아주 아주 기본 형태니까 그렇게 보시면 되고요. 그래서 배열의 크기로 나누면은 평균이 나오는 이렇게 되는 거죠. 여기에 만약에 하나 과목이 하나 추가돼서 점수가 하나 더 들어가야 된다 그러면 또 이렇게 넣어야 되고 그거 여기서는 뭐 특별히 고칠 건 없죠. 이 크기가 그대로 크기가 변수임으로 들어가게 돼 있으니까 그렇게 구조가 되는 겁니다.
这是您们经常看到的循环的最基本、非常基本的形式,就这样看就可以了。所以如果用数组的大小除,就会得到平均值。如果要增加一个科目,再加入一个分数,那就这样添加,在这里没有特别需要修改的地方。因为大小是变量,所以会这样进行。


Attendees 1 35:50 앞에 프로그램 설명인데 여러분들한테는 별로 의미가 없는 설명인 것 같고 이게 이제 1학년들 상대로 하던 강의 듣다 보니까 PT 자료가
这是前面程序的说明,对你们来说似乎没有太多意义。这是针对大一学生的讲座资料。


Attendees 1 36:08 채솟값 찾기 알고리즘 여기서 한번 보시죠. 저기에 저렇게 저장된 거에 최대 값 또는 최소값을 구하는 내용입니다. 배열의 첫 번째 요소를 최솟값으로 가정하고 배열의 두 번째부터 마지막 요소요소 마지막 요소들까지 값을 비교해 가는 것을 얘기합니다. 말로 일단 말로 일단 설명하는 걸 한번 들어보세요. 첫 번째 요소를 기준 값으로 가정을 하고요. 첫 번째 요소를 최솟값이라고 가정을 하는 겁니다. 얘가 최솟값이다 이렇게 일단 생각을 하고 보는 겁니다. 그다음에 두 번째하고 비교를 해서 얘하고 비교를 해서 어느 게 더 큰지를 보는 겁니다. 두 개를 비교해서 최소 값 구하는 걸로 합시다. 어느 게 더 작은지를 보는 겁니다. 그래가지고 얘가 더 작으니까 그러면은 현재 최소값 내가 최솟값이라고 생각한 90을 없애고 86을 최솟값으로 다시 업데이트해서 저장을 해놓는 거죠. 이게 최솟값이다라고 일단 해놓는 겁니다.
与会者 1 36:08 分,让我们来看看查找最大值或最小值的算法。假设数组的第一个元素是最小值,然后从第二个元素开始比较直到最后一个元素。首先用语言解释一下。假设第一个元素作为基准值,假定它是最小值。先这样想。然后与第二个元素比较,看哪个更大。比较这两个元素,看哪个更小。如果第二个元素更小,那么就把原来认为是最小值的 90 替换成 86,并将 86 更新为新的最小值。就这样先确定下来。


Attendees 1 37:21 이런 식으로 해서 또 이거랑 비교를 해서 어느 게 더 큰지 작은지를 보고 얘가 더 작으니까 이거는 이거를 이거를 이걸로 업데이트를 한 거죠. 그래갖고 75를 최솟값이라고 보고 다시 업데이트 하는 겁니다. 이런 식으로 이제 비교를 해 나가는 거를 얘기합니다. 굉장히 단순한 방법이죠. 단순한 방법이지만 굉장히 정확하고 효과적일 수 있는 방법이기도 합니다. 저렇게 업데이트를 계속해 나가면서 검색을 하는 겁니다. 하나씩 하나씩 비교해 가면서 딱 봐도 배열 그러니까 변수 이게 리스트가 굉장히 길면은 아주 아주 비효율적인 방법처럼 보이죠. 그죠? 근데 리스트가 짧다면은 짧다면은 꽤 괜찮은 방법임을 알 수가 있습니다. 더군다나 이 값들이 이렇게 정리가 안 돼 있을 때는 더욱더 그렇죠 어디 어디에 어떤 값이 있는지 모르기 때문에 하나씩 하나씩 뚜껑 열어가면서 비교를 해 나가는 거죠.
与会者 1 37:21 分,以这种方式继续比较,看哪个更大或更小。如果它更小,就更新为新值。这样把 75 作为最小值并再次更新。这就是比较的过程。这是一种非常简单的方法。虽然看起来简单,但可能非常准确和有效。通过不断更新来搜索,逐一比较。如果列表非常长,这看起来可能非常低效。对吧?但如果列表很短,这是一个相当不错的方法。尤其是当这些值没有被整理好时,更是如此,因为不知道值的具体位置,只能一个一个地打开比较。


Attendees 1 38:58 이거 프로그램으로 놓으면은 이렇게 됩니다.
如果将此程序放置,就会变成这样。


Attendees 1 39:09 여러분들 이 정도는 그냥 바로바로 하지는 못해도 어느 정도 보면은 그냥 아실 정도는 되죠. 이제 그냥 보면은 그렇게 크게 설명이 필요한 그런 부분들은 없죠. 지금
各位,即使不能立即完全做到,但看到这个程度的话,基本上也能理解了。现在看来,这部分也不需要太多解释。现在


Attendees 1 39:37 미니멈 값을 첫 번째 배열에 있는 값을 미니멈 값으로 넣어놓고 그거 하고 다음 배열 값들하고 계속 비교를 하면서 미니멈 값을 계속 업데이트를 하고 마지막에 테이크를 하는 상황이죠.
参会者 1 39:37 将第一个数组中的值作为最小值,然后与后续数组的值进行比较,不断更新最小值,最后取出最小值。


Attendees 1 40:10 이거 이제 조금 전에는 최소 값을 찾는 거고 지금은 특정 값을 찾는 걸 얘기합니다. 내가 어떤 값을 찾고 싶은데 그 값이 여기 리스트에 어디에 있는지 없는지 또는 어디에 있는지 그런 것들을 이제 알고 싶을 때 하는 건데 이거는 여러분 알다시피 우리 인터넷 검색할 때 사용을 많이 하죠. 여러분이 검색하는 단어 키워드를 딱 입력을 하면은 인터넷 정보 검색이 이런 방식으로 사용을 하는 알고리즘 중에 하나입니다. 물론 이거보다 더 인터넷 정보 검색은 이거보다 더 복잡하고 좀 더 다양한 방식을 취하고는 있지만은 그중에 하나라는 얘기입니다. 만약에 찾고자 하는 그 값이 50이라고 가정을 하면요. 50이 이 리스트에 어디 있는지 모르겠지만 있는지 없는지 또는 어디에 있는지를 찾고 싶을 때 사용하는 방법입니다. 조금 전에 최솟값을 찾는 거하고 유사하긴 한데 최솟값은 어떤 값인지 모르는 상태에서 리스트에 있는 것 중에 제일 작은 값을 찾는 거죠.
参会者 1 40:10 刚才我们讨论的是找最小值,现在我们讨论的是查找特定值。假如我想找某个值,想知道它是否存在于列表中,或者具体位于何处。这是我们在互联网搜索时经常使用的方法。当你输入搜索关键词时,信息检索就是使用这种算法之一。当然,互联网信息检索比这更复杂,采用更多不同的方式。比如,假设我们要找的值是 50,我们想知道它是否存在于列表中,如果存在,位于何处。这种方法与之前找最小值类似,但找最小值是在不知道具体值的情况下,从列表中找出最小的值。


Attendees 1 41:26 내가 찾고자 하는 값이 뭔지도 모르고 단지 최솟값이라는 거를 리스트 중에서 제일 작은 값을 찾는 내용이고 이거는 내가 찾고자 하는 값을 이미 정해져 있고 이 값을 지금 리스트에서 보려고 하는 거죠. 좀 다르죠 예 많이 다릅니다. 좀 다른 게 아니라 이런 거 이렇게 특정 값을 찾을 때는 첫 번째 순차 탐색이라는 방식으로 해나갈 수 해나가면은 하나씩 하나씩 비교를 해 나갈 하면서 내가 찾고자 하는 값이 맞는지 틀리는지를 비교를 하는 거죠. 이렇게 배열을 잡고 찾는 값을 정해주면은 그 값하고 각각의 배열에서 한 개씩 꺼내와서 내가 찾는 값하고 같은지를 보는 거죠. 실제로 프로그램을 보면은 아까 최솟값 구하는 거하고 크게 다르지 않은 구조를 갖고 있기는 한데 어쨌든 내용은 상당히 다르죠. 이렇게 해서
参会者 1 41:26 我甚至不知道我要找的是什么值,仅仅是找出列表中最小的值。而现在我要找的是一个已经确定的值,并且想在列表中查找这个值。这是不同的,对,差别很大。不仅仅是有点不同,而是当要查找特定值时,可以采用首先使用顺序搜索的方式,一个一个地进行比较,判断是否是我要找的值。就这样设置数组,并指定要找的值,然后从数组中逐个取出值,看是否与我要找的值相同。实际上,从程序来看,与之前求最小值的结构并没有太大的区别,但内容确实大不相同。就这样构成。


Attendees 1 42:50 구성을 하게 됩니다. 하나씩 하나씩 꺼내와서 요거 요 값을 꺼내와서 50하고 비교해 보고 아니면은 그다음 거 아니면 그다음 거 아니면은 그다음 거 맞으면 여기서 딱 중지가 되죠. 예 끝납니다. 찾는 값이 앞에 있으면은 이 반복문 실행이 한 번에 끝날 수도 있는 거고, 만약에 맨 뒤에 있으면은 이 반복물 실행이 배열 수만큼 끝까지 가야 되는 가야 될 수도 있는 거고 이거는 복불복이죠. 근데 아까 그 채소값 같은 경우는 일단 무조건 끝까지 가야 되죠. 예 어떤 경우라도 배열 끝까지 다 가야 되는 거죠. 그러니까 실행 횟수가 딱 정해져 있죠. 몇 번 실행해야 될지 네 이거 같은 경우는 실행 횟수가 정해져 있지가 않습니다. 그렇죠 빠르면 한 번 만에 찾을 수도 있고 아니면은 끝까지 가야 되고 뭐 그런 상황인 거죠. 예 그런 차이점도 있고 그다음에 배열은 그렇고 정렬에 대해서도 한번 보시죠. 정렬은 이렇게 돼 있는 걸 얘기합니다.
参会者 1 42:50 逐个取出,取出这个值,与 50 比较,如果不是,就取下一个,如果不是,就取下一个,直到找到为止。是的,就结束了。如果要找的值在前面,这个循环可能一下子就结束;如果在最后,可能需要遍历整个数组。这是碰运气。但是像刚才那个蔬菜价值的情况,无论如何都必须遍历到最后。是的,无论什么情况都必须遍历整个数组。所以执行次数是确定的。而在这种情况下,执行次数是不确定的。对,可能一下子就找到,也可能要遍历到最后。是的,这就是不同之处,接下来让我们看看数组的排序。这就是排序。


Attendees 1 44:07 이렇게 무작위로 있는 데이터를 이렇게 순서대로 이런 식으로 하는 걸 정렬이라고 하죠. 이거는 뭐 당연한 얘기고 앞 시간에도 선택 정렬하고 퀵 정렬을 우리가 봤는데 앞 시간에 봤으니까 이거 두 개는 놔두고 버블 영역 하나 더 보도록 하겠습니다.
将这些随机的数据按照这种方式排序,我们称之为排序。这是显而易见的,在前一堂课我们已经学习了选择排序和快速排序,既然我们已经了解了这两种,那么现在让我们来看看冒泡排序。


Attendees 1 44:28 이거는 앞에 우리가 앞에 이 두 개는 우리가 앞에서 봤었죠. 전 시간에 이거 선택 정렬하는 거 이렇게 비교해서 하고 비교해서 하고 비교해서 하고 이런 식으로 이렇게 정당화 시키는 걸 얘기하죠. 그다음에 퀵 정렬은 아무거나 딱 잡아놓고 그거 비교해서 좌우로 정렬시키는 거 아무거나 하나 그냥 딱 집어서 이거는 뭐 정하기 나름입니다. 맨 앞에 거 또는 맨 뒤에 거 이렇게 딱 찍기 좋은 거 하나 딱 집어서 그걸 기준으로 좌우로 정렬 정렬하고 나면은 또 하나 찍어서 또 좌우 정렬 이런 식으로 해서 퀵 정렬의 기본 내용이고요. 그다음에 버블 정렬은 이렇게 돼 있습니다. 두 개의 블록을 비교해서 어느 것이 더 작은지 파악하는 거 좀 전에 최솟값 찾는 얘기를 했었죠. 그거와 같은 내용입니다. 더블 용렬은
这两种我们之前已经学过了。在上一节课中,我们讲解了选择排序,通过比较来排序。然后是快速排序,随意选择一个基准点,并根据该点进行左右排序。这个基准点可以是任意选择的,可以是第一个或最后一个,选择一个便于比较的点。通过这种方式,先选择一个点进行左右排序,然后再选择另一个点继续排序,这就是快速排序的基本原理。接下来是冒泡排序,通过比较两个块来确定哪个更小,这与我们之前讨论的寻找最小值的方法类似。冒泡排序是这样进行的。


Attendees 1 45:43 인접한 두 요소를 비교해서 위치를 교환해 가면서 정렬을 해나가는 그런 과정입니다. 그래서 얘네 둘이 기수에서 어느 쪽이 더 크냐 또는 장량를 결정이 되면은 작은 쪽을 왼쪽으로 갈 건지 큰 쪽을 왼쪽으로 갈 건지를 미리 정해놔야겠죠. 예를 들어서 이 순서대로 정렬을 하고자 한다면은 작은 거를 왼쪽으로 몰아야 되겠죠. 그럼 얘네들이 자리를 바꾸면 됩니다. 그렇죠. 이렇게 자리를 바꾸게 됩니다. 자리를 바꾼 다음에 이거를 기준으로 얘는 이제 자기 자리가 이제 된 거죠. 이거를 기준으로 옆에 거하고 또 비교를 해서 이 옆에 거라는 거는 한 방향으로 계속 가야 되는 거죠. 얘는 이미 했으니까 옆에 거하고 비교를 해서 또 둘이 비교를 해서 작은 쪽을 왼쪽으로 큰 거를 오른쪽으로 놓는 식으로 가는 겁니다. 이제 그렇게 정렬하기로 정해졌으니까 그렇게 쭉 계속 정렬을 하면은 가장 큰 놈이 현재 지금 요 얘가 얘 위치가 정해질 겁니다. 예.
参会者 1 45:43 通过比较相邻的两个元素并交换它们的位置来进行排序的过程。因此,我们需要预先确定这两个元素在基数中哪一个更大,或者决定是将较小的移到左边还是将较大的移到左边。例如,如果要按此顺序排序,那么就需要将较小的元素推到左边。那么它们就需要交换位置。就是这样交换位置。交换位置后,这个元素现在已经找到了自己的位置。以此为基准,与旁边的元素比较,旁边的元素需要继续朝一个方向移动。已经处理过的元素,与旁边的元素比较,比较后将较小的放在左边,较大的放在右边。既然已经确定了这种排序方式,就这样继续排序,最大的元素最终会确定在当前位置。是的。


Attendees 1 47:05 중간에 어딘가에서 멈출 수도 있고 정해지게 되죠. 그런 식으로 해서 계속 정렬을 해 나갑니다. 이거를 버블 정렬이라고 부릅니다. 버블 정렬의 기본 방법입니다. 그러니까 여기 버블이라는 게 풍선이 둥둥둥 떠올라가는 것처럼 그런 식으로 이제 한다라고 해서 버블이라는 이름을 붙였다고 합니다. 그래서 이게 이제 큰 값이 아니면 이 반대로 정렬이 될 수도 있죠. 예 큰 값이 위로 계속 올라가는 그런 형태로 정렬이 되는 거를 버블 정렬이라고 합니다. 버블 정렬 알고리즘도 굉장히 심플하죠. 말씀드린 대로 이렇게 그냥 하나씩 하나씩 맨투맨으로 하는 거 이게 보기보다 생각보다 굉장히 효과적입니다. 그리고 이 실행 횟수 같은 게 예측이 정확하게 되기 때문에 여러 가지 면에서 효과적일 때가 많아요. 아까
参会者 1 47:05 它可能会在中间某处停止,然后确定位置。就这样继续排序。这种排序方法称为冒泡排序。这是冒泡排序的基本方法。之所以叫"冒泡",是因为就像气泡浮上水面一样。如果不是大值,排序也可能是相反的。是的,大值不断向上冒泡的这种排序方式就叫冒泡排序。冒泡排序算法非常简单。正如我所说,逐个逐个地进行比较,这比看起来更有效。而且由于执行次数可以准确预测,在 many 方面都很有效。刚才


Attendees 1 48:14 얘 같은 경우는 실행 횟수가 지금 정확하게 알 수가 없죠. 빠르면 한 번에 가장 늦으면은 배열 끝까지 가야 되니까 실행 횟수를 알 수가 없습니다. 이게 사실은 이런 거 이런 불확실한 부분이 경우에 따라서는 조금 효율을 떨어뜨리는 경우가 있거든요. 다른 프로그램들하고 연동이 될 때 근데 오히려 실행 횟수가 딱 정해져 있으면은 예측을 할 수 있기 때문에 그런 경우가 더 효율적일 때가 있습니다. 쓰다 보면은 그러니까 알고리즘이라는 게 어느 게 더 좋다 어느 게 더 효율적이다 이렇게 딱 그 알고리즘만 놓고 얘기를 할 수가 없는 게 그래서 그래요. 상황에 따라서 어떤 알고리즘이 더 효과적이고 더 효율적이고 이게 상황에 따라 달라지기 때문에 그래서 그렇습니다.
对于这种情况,执行次数目前无法准确知道。快的话可能一次就完成,慢的话可能需要遍历到数组末尾,所以执行次数无法确定。事实上,这种不确定性在某些情况下可能会降低效率。但是,当与其他程序连接时,如果执行次数是固定的,就可以进行预测,在某些情况下可能会更加高效。随着使用,你会发现算法并不能简单地说哪个更好、哪个更高效。这是因为根据不同情况,某些算法可能更有效、更高效。


Attendees 1 49:09 예 그래서 여러분들도 알고리즘이나 이런 프로그램을 할 때 아까 프린트는 다섯 번 쓰는 거 하고 포문 한 번 돌리는 거 하고 그런 것처럼 어떤 게 더 우월하다 그래서 더 우월하다라고 하는 방법만 써야지 이런 식으로 너무 고지식하게 생각을 안 하셨으면 좋겠어요. 그렇게 하다 보면은 프로그램이 너무 딱딱해져요. 유연성이 떨어집니다.
所以我希望大家在编写算法或程序时,不要像之前那样固执地认为某种方法就是最优的,不要过于死板。就像之前打印五次和使用循环一样,不要认为只能使用某种方法。这样做会使程序变得非常僵硬,降低其灵活性。


Attendees 1 49:46 이렇게 간단하게 이렇게 코드화시키면 이렇게 될 겁니다. 이거는 뭐 여러분들 대략 아실 테니까 그냥
与会人员 1 49:46 这样简单地进行代码化,就会变成这样。这个大概是你们都知道的,所以就不多说了


Attendees 1 50:27 이게 설명하려고 한 줄 한 줄 애니메이션을 걸어놔가지고 어
与会人员 1 50:27 这是想要逐行添加动画,然后就


Attendees 1 50:43 여러분들은 그냥 봐도 될 것 같으니까
各位可以直接看一下


Attendees 1 50:51 이거 하고 이거는 이제 그냥 말로 이렇게 지금 설명을 해놓은 거죠. 그렇죠 예 이런 식으로 이제 하면 된다 이렇게 했는데 실질적으로 쓰면 이렇게 되죠. 여기 서로 자리 바꾸는 내용입니다. 이거 그렇죠 우리 컵의 물건 바꾸는 거 덮어 쓴다는 말씀드린 거 그 사항이죠. 이거는 이제 그냥 말로 말로 그냥 코드를 대신해서 쓴 거고 교환한다 뭐 이렇게 이거를 실제로 이제 코드화 시키면은 요렇게 될 겁니다. 그죠 요 부분 이렇게 보시면 되겠죠. 이거는 서로 자리바꿈할 때 쓰는 기본적인 내용이니까 컵의 abc 컵 3개 중에 c 버퍼를 놓고 ab ab에 있는 내용을 서로 바꾸는 바꿀 때 쓰는 것 같은 그 내용입니다.
这是我现在口头解释的内容。对,就是这样。实际使用时是这样的。这里是关于交换位置的内容。就是我们之前说的关于杯子交换的内容,覆盖写入。这是用语言代替代码的部分,关于交换的内容。如果实际编码,就会是这样。这部分是关于交换时使用的基本内容,是关于如何在 3 个杯子中使用 c 缓冲区交换 ab 中的内容。


Attendees 1 51:53 이거는 이 정도 프로그램은 여러분들한테 뭐 특별하게 설명할 것도 없고 그렇죠 그냥 한번 쭉 보고 가면 될 것 같아요.
对于这种程度的程序,我们没有什么特别需要向你们解释的,对吧?就简单看一看就可以了。


Attendees 1 52:11 이지 탐색 알고리즘에 대해서 알고리즘 이것도 지금 했던 내용들하고 유사하긴 한데 알고리즘이 다 비슷비슷해 보여요. 보다 보면은 다 비슷비슷한데 여러분들 저기 비슷비슷해서 그냥 비슷하네 그냥 별거 없네 뭐 이렇게 생각하실 게 아니고 그 알고리즘 하나하나의 특징을 꼭 반드시 잡아놓으세요. 예 말씀드린 대로 어떤 알고리즘이 언제 어떻게 쓰이느냐에 따라서 효율성이 달라지기 때문에 엄청난 큰 차이를 보이는 건 아니겠지만 그래도 경우에 따라서는 그 부분이 굉장히 키가 될 수도 있거든요. 그러니까 비슷해 보이거나 해도 다양한 알고리즘을 경험을 해보시는 게 좋습니다. 예 그리고 이거는 꼭 알고리즘 가지고 뭘 하지 않더라도 다양한 알고리즘들을 한 번씩 보다 보면은 뭐랄까 이런 표현이 좀 그런데 잔머리가 좀 좋아져요. 소위 얘기하는 잔머리가 좀 좋아집니다. 사람이 막 여러 가지 상황을 이렇게 막 검색하고 상황에 대응하고 하는 인기 후변도 좀 길러지고 그런 효과들도 좀 있습니다.
关于搜索算法,这个算法看起来与之前的内容很相似。算法看起来都很相似。不过,当你看到它们时,不要只是认为"哦,它们都差不多,没什么特别的"。你必须抓住每个算法的特点。正如我之前说的,根据算法的使用时机和方式,效率会有所不同。虽然可能不会有巨大的差异,但在某些情况下,这些细节可能会变得非常关键。所以,即使看起来相似,也建议你尝试多种算法。而且,即使不是专门用算法做什么,多看看不同的算法,会让你的思维变得更加灵活。所谓的"机智"会有所提高。这有助于提高人在各种情况下搜索和应对的能力。


Attendees 1 53:33 그러니까 알고리즘을 꼭 무슨 프로그램하고만 연관시켜서 난 프로그램 안 할 건데 알고리즘 봐서 뭐 하냐 머리만 아프지 뭐 이렇게 생각하실 게 아니라 알고리즘 관련된 책도 많거든요. 예 그런 것들을 한번 좀 보시고 하면은 생각하는 방식도 조금 도움이 되고요. 예 알고리즘 여러 알고리즘들을 한 번씩 그냥 소설 책 읽듯이 그냥 읽어보시는 것도 괜찮습니다. 그러니까 그냥 한 번씩이라도 좀 보시면 좋을 것 같아요. 이진 탐색 알고리즘 이진 탐색 알고리즘은 아까 좌우로 정렬하는 최솟값 찾는 것 같은 약간 그런 느낌의 알고리즘이 있죠. 보시다시피 상당한 시간이 걸리는 상당한 시간이 걸릴 듯한 그런 선형 탐색하고 다르게 이진 탐색은 속도가 굉장히 빠릅니다. 왜냐하면 한 번 탐색을 실행할 때마다 검색해야 되는 양이 반으로 줄어들게 되는 효과가 있기 때문에 그래가지고 리스트가 100개인 거하고 50개인 거하고 이진 탐색에서 사용되는 횟수는 한 번밖에 차이가 안 나는 겁니다.
参会者 1 53:33 所以,不要只将算法与编程联系在一起,认为我不会编程,看算法有什么用,只会让头疼。相反,有很多与算法相关的书籍。是的,看这些书可能会对思考方式有一些帮助。是的,阅读各种算法就像读小说一样也不错。所以,最好偶尔看看。二分查找算法是一种类似于之前找最小值的左右排序算法。正如你所看到的,与需要花费相当长时间的线性搜索不同,二分查找速度非常快。因为每次搜索时,需要搜索的数量都会减半。所以,对于 100 个和 50 个列表来说,二分查找使用的次数几乎没有区别。


Attendees 1 54:57 한 번 실행하면은 100개인 리스트가 50으로 줄어들기 때문에 예 그래서 100개인 탐색 하는 거하고 50개 탐색이 한 번 실행밖에 차이가 안 나죠. 순차 검색을 하게 되면은 100개인 거는 100번하고 50번은 50번이니까 2배의 차이라면 엄청난 차이가 날 텐데 이진 탐색은 한 번 실행밖에 차이가 안 나는 거죠. 그런 면에서 굉장히 강력한 탐색 알고리즘입니다. 그래서 많이 쓰이기도 하고요. 이거는 이렇게 합니다.
参会者 1 54:57 执行一次后,100 个列表会缩减到 50 个。是的,所以搜索 100 个和 50 个的差异只有一次执行。如果使用顺序搜索,100 个需要搜索 100 次,50 个需要搜索 50 次,这将是 2 倍的差异,但二分查找只相差一次执行。从这个角度来看,这是一种非常强大的搜索算法。因此,它被广泛使用。就是这样。


Attendees 1 55:35 예를 들어서 숫자 4를 찾으려고 합니다. 여기서 이 배열에서 숫자 4를 찾으려고 해요. 그러면은 하나를 딱 찍고 가운데 거 중앙값을 딱 찍은 다음에 얘가 4보다 크냐 작냐를 보는 겁니다. 그래서
例如,我们要找数字 4。在这个数组中,我们想找到数字 4。那么,我们会先确定一个点,然后找到中间值,看它是大于还是小于 4。所以


Attendees 1 56:05 차가 좀 있습니다. 요 값이 4보다 크니까 그럴 경우에는 이쪽을 선택을 하는 거죠. 그러면 자동적으로 이쪽으로 그냥 날리는 겁니다. 더 이상 볼 일 없다는 거죠. 볼 일 없는 거죠. 그리고 이쪽 선택된 값 중에서 그 중간 값을 하나 딱 선택을 합니다. 리스트 리스트는 있으니까 리스트는 있으니까 그 중간 값을 선택하는 건 어렵지 않죠 전체가 10개면은 5번이나 여섯 번째 값을 잡는 거고 그다음에 5개가 있으면은 세 번째 값을 잡으면 되니까 그런 식으로 이제 짝수면은 하나씩 옆으로 밀리든가 하면 되니까 그거는 중요한 게 아니니까 그래서 선택을 하고 그거랑 비교를 해서 이번에는 4보다 3이 작으니까 이쪽 거를 다 없애버리는 겁니다. 이렇게 해서 4가 있는 위치를 탐색을 해내는 거죠. 사가 여기 있었네 하고 딱 찾는 겁니다. 단 네 번 만에 찾았죠.
有一些差异。如果这个值大于 4,那么我们就选择这一侧。这样就直接排除了另一侧,没有必要再看了。然后在选定的值中选择一个中间值。因为列表是存在的,所以选择中间值并不困难。如果总共有 10 个,就选择第 5 或第 6 个值;如果有 5 个,就选择第 3 个值。对于偶数个,可能会稍微移动一下,但这并不重要。这样选择并比较后,发现 3 小于 4,就把这一侧全部排除。这样就找到了 4 的位置。确定了 4 在这里。仅仅用了四次就找到了。


Attendees 1 57:10 이거를 순차 검색하면은 여기서부터 하나씩 검색해서 들어가면은 세 번 만에 찾기는 하겠지만은 이거는 그냥 재수인 거고 그렇죠 예 4가 만약에 여기 있다 그러면은 여기까지 가야 되죠. 한 걸음 한 걸음 해서 여기까지 가야 돼요. 어디 확률적으로 봤을 때도 그렇고 이진 탐색 그리고 또 더군다나 이것도 마찬가지로 실행 횟수를 예측이 정확하게 실행 횟수 예측이 가능합니다. 최대 실행 횟수가 몇이다라는 걸 우리가 알 수가 있어요. 알 수가 있고 그중에서 검색이 중간에 되는 거에 대해서 쉽게 알 수가 있죠. 이게 인지 탐색의 기본 사항입니다. 중앙에 있는 값을 찾는 값하고 비교를 해서 하나씩 하나씩 그 중 계속 중앙값을 값하고 비교를 해가면서 찾는 겁니다.
如果逐个搜索,从这里开始一个个搜索,虽然可以在三次内找到,但这只是运气。假如 4 在这里,那么就必须一步一步走到这里。从概率上看,通过二分查找,我们可以准确预测执行次数,知道最大执行次数。我们可以轻易地了解搜索在中间的情况。这是二分查找的基本情况。通过比较中间值和要查找的值,一步步不断比较中间值来查找。


Attendees 1 58:18 가장 큰 특징이 이거죠. 한 번 실행할 때마다 탐색의 범위가 절반씩 팍팍팍 줄어듭니다. 그러니까 암만 큰 배열이 있어도 이진 탐색으로 시작하면은 예 한 번에 반씩 날아가니까 굉장히 빠른 속도로 검색을 실행하게 될 수 있습니다.
最大的特点是每执行一次,搜索范围就会减半。即使是非常大的数组,使用二分查找,每次都会减半,因此可以以非常快的速度执行搜索。


Attendees 3 58:38 아 물
参会者 3 58:38 啊 水


Attendees 1 58:39 물론 이게 한 가지 단점이라고 하기는 좀 그렇고요. 한 가지 상황은 뭐냐 하면은 배열이 정렬이 돼 있어야 된다라는 조건이 있습니다. 배열이 정렬이 안 돼 있으면 이지 탐색을 쓸 수가 없습니다. 그러니까 이진 탐색을 쓰기 위해서는 대어를 정렬하는 전열 알고리즘을 먼저 한 번 실행을 한 다음에 이진 탐색을 써야 되는 조건이 하나 있죠. 정렬을 하는 게 시간이 너무 오래 걸리고 정렬을 해서 이진 탐색을 하는 게 비효율적일 수 있다. 그러면은 다른 알고리즘을 선택을 해야겠죠. 데이터가 이미 정렬이 돼 있다 이러면 묶고도 따질 필요도 없이 2진 3색 쓰면 되는데 배열이 정렬이 안 돼 있는 상태다. 그러면은 정렬을 하고서 이층 탐색을 쓸지 아니면 정렬 안 된 상태의 배열을 탐색하는 어떤 다른 방법을 쓸지 결정을 해야 되겠죠. 그거는 이렇게
参会者 1 58:39 当然,这不能说是一个缺点。一个情况是,数组必须是有序的。如果数组没有排序,就无法使用二分查找。也就是说,要使用二分查找,必须先执行一次对数组进行排序的算法,然后再使用二分查找。排序需要很长时间,使用排序后再进行二分查找可能效率低下。在这种情况下,需要选择其他算法。如果数据已经排序,那么直接使用二分查找就可以了;如果数组没有排序,就需要决定是先排序再使用二分查找,还是使用其他方法搜索未排序的数组。这就是


Attendees 1 59:51 에어의 총 개수가 n이면 필요한 횟수는 최대한 로그 2 n으로 가게 되고요. 그다음에 정렬이 돼 있어야지만 사용이 가능한 조건이 있습니다. 이거는 상당히 중요한 조건이죠. 그리고 데이터가 빈번하게 변경이 되는 경우는 쓰기가 좀 곤란합니다. 왜냐하면 데이터가 빈번하게 바뀌면은 딱 지금 현재 있는 정렬된 상태를 가지고 탐색이 들어가야 되는데 탐색 중에 갑자기 여기 데이터가 바뀌어버렸다 그러면은 골치 아프죠. 예 골치 아프게 되죠. 그러면 얘기가 달라지죠. 또 그럼 처음부터 다시 하거나 이래야 되죠. 예 그런 상황이기 때문에 데이터 변경이 자주 일어나는 경우는 좀 쓰기가 어렵습니다. 그래서 대부분 이제 좀 어느 정도 고정된 값 딱 이제 저장돼 있는 값을 가지고 얘기할 때 사용을 하게 됩니다. 사용하는 데 약간의 제한 사항이 좀 있긴 하지만은 그럼에도 불구하고 엄청난 탐색 속도 때문에 이진 탐색 알고리즘은 아주 그리고 또 구현이 되게 간단하죠.
如果数组的总数是 n,那么所需的次数将最多为 log 2 n。接下来,只有在已排序的情况下才能使用,这是一个相当重要的条件。当数据频繁更改时,使用起来会有些困难。因为如果数据频繁变化,在当前排序状态下进行搜索时,如果搜索过程中数据突然发生变化,那就会很麻烦。这样的话,就需要从头开始重新进行。因此,在数据频繁更改的情况下,使用起来会有些困难。所以大多数情况下,它是用于处理某些相对固定的已存储值。尽管有一些限制,但由于其极快的搜索速度,二分查找算法仍然非常有用,而且实现起来非常简单。


Attendees 1 1:01:03 예 구현도 되게 간단하고 연산하는 것도 되게 간단합니다. 그냥 비교하고 반 날리고 비교하고 반 날리고 하는 식으로 가면 되니까 실행하는 데도 무지하게 심플하고 하여튼 여러 가지로 장점이 많습니다. 예 그래서 이런 제한 사항이 크게 걸리는 게 두 가지가 사실 이거는 크게 제한이 이거는 뭐 크게 걸린다고 할 건 아니고 이거는 어차피 정해져 있는 거에서 실행이 되는 거니까 그러니까 요 제안 사항이 조건이 하나 크게 붙음에도 불구하고 비지 탐색은 좀 자주 많이 쓰이는 방법 중에 하나입니다. 프로그램으로 설명을 만약에 한다면 이런 식으로 설명이 될 수가 있어요.
是的,实现和运算都非常简单。只需要比较并切掉一半,然后继续比较并切掉一半,执行起来非常简单直接。总的来说,它有很多优点。是的,虽然有这两个限制条件,但实际上并不是很大的障碍,因为它是在已确定的范围内执行的。因此,尽管有这个条件的限制,二分查找仍然是经常使用的方法之一。如果用程序来解释,可能会是这样的。


Attendees 1 1:02:02 이거는 조금 조금 내용이 조금 있지만은 예 복잡한 건 없죠. 지금 말로 얘기한 게 그냥 그대로 옮겨져 있으니까 그죠
参与者 1 1:02:02 这个内容虽然很少,但是没有复杂的内容。现在说的话就是直接转移过来的,对吧。


Attendees 1 1:02:26 아마 아직 프로그램이 조금 조금 이렇게 덜 익숙하신 분들은 요 부분이 조금 요 요 세 줄이 요 세 줄이 아마 왜 이게 이렇게 되는지가 조금 이제 한눈에 눈에 얼른 안 들어오실 거예요. 근데 이거 천천히 보시면은 그냥 변수를 이게 변수로 쓰는 거라서 그렇지. 복잡한 내용 좀 복잡한 내용 아닙니다. 그냥 가운데 딱 찍고 가운데 좌표 찍고 들어가 갖고 비교해서 한쪽 날리고 또 남은 것 중에 또 가운데 좌표 찍고 들어가서 비교해서 한쪽 날리고 이런 식으로 지금 들어가는 거기 때문에 프로그램 내용은 되게 실피합니다.
参与者 1 1:02:26 可能对于还不太熟悉程序的人来说,这部分这几行可能会让人不太明白为什么会这样。但是如果仔细看的话,这只是使用变量而已。内容并不复杂。就是找中间的点,打中间坐标,然后进行比较,删除一边,然后在剩下的部分中再找中间点,进行比较,删除一边,就是这样进行的。所以程序内容非常简单。


Attendees 1 1:03:23 거리 찾기 알고리즘 이제 여기 나오는데 이거 한번 또 이거 여기서 또 주네.
参会者 1 1:03:23 现在出现距离查找算法,这个再次出现在这里。


Attendees 1 1:03:38 자꾸 거리 탐색 알고리즘 들어가면 자꾸 멈추게 되네. 허리 깊게 알고리즘 한 5분만이라도 들어가 혹은 뭐 부분만이라도 단거리 거리 찾기 알고리즘의 기본적인 거는 경로 알고리즘의 기본적인 거는 일단 단거리 찾기죠. 가장 짧은 거리 이거 같은 경우에 이제 집에서부터 학교까지 가는 경로를 선택을 하는데 이렇게 세 가지 경로 중에 어느 경로가 가장 좋을까라는 거를 얘기를 하는 거죠. 저 예시는 뭐 그냥 눈으로 봐도 여러분들은 알겠지만 저거를 우리가 이걸 눈으로 봐도 알겠지만이라고 얘기한 것처럼 이걸 여러분들이 그냥 눈만 보고서 이거네 하고 딱 그냥 보이실 겁니다. 그렇죠 이거네 할 때 하기 전까지 눈으로 한번 쫙 스캔을 했을 때 이거네라고 대답하기 전 눈으로 스캔 그러니까 이걸 이 그림을 처음 보고 이거네라고 대답하기까지의 과정 그거를 잘 정리해 놓으면 그게 알고리즘이 됩니다. 예 그리고 그걸 일반화시키고 그러니까 정리해서 일반화시키면 그게 알고리즘인 거니까요.
参会者 1 1:03:38 频繁进入距离搜索算法时总是会停止。深入研究算法,哪怕只有 5 分钟或者部分内容,基本的短距离查找算法,也就是路径算法的基本内容,首先是短距离查找。比如从家到学校的路径选择,在三条路径中选择最佳路径。即使是通过肉眼观察,大家也能理解,但这个过程需要通过眼睛扫描,在第一次看到图像时做出判断之前的过程,如果能很好地整理这个过程,那就是算法。是的,通过归纳和泛化,将其整理成算法。


Attendees 1 1:05:02 그거에 대해서 이건 이제 좀 간단하지만 좀 더 복잡한 경우에 어떤 식으로 알고리즘이 짜지는지를 한번 얘기를 해보려고 합니다. 일단 여러분들이 이렇게 아마 생각을 하셨을 겁니다. 굉장히 빠른 시간에 보셨겠지만은 이 세 가지 경로를 한 번씩 다 순간적으로 눈으로 이렇게 스캔하면서 보셨을 거예요. 그죠? 이렇게 하면 이렇게 가는 길 이렇게 가는 길 이렇게 가는 길에 대해서 여기 써 있는 숫자들을 보고 이거죠. 여기 숫자들을 보고 값들을 봤을 거고요. 그 값들을 보고 불과 1~2초 2 3초 만에 이거네라고 대답을 딱 했을 때가 이거를 보고 대답을 했을 겁니다. 분명히 본인이 의식을 하든 못했든 간에 그죠? 예 그거가 알고리즘이 되는 거죠.
出席者 1 1:05:02 关于这个,我想讨论一下在稍微复杂的情况下算法是如何设计的。首先,你们可能是这样思考的。尽管时间很短,但你们可能已经瞬间用眼睛扫描了这三条路径。对吧?就这样,看这条路径,那条路径,还有这条路径,看着这里的数字。看着这里的数字和值。看完这些值后,可能只用了 1-2 秒或 3 秒就立即回答了这就是答案。无论是否意识到,对吧?是的,这就是算法。


Attendees 1 1:06:11 a에서 b로 가는 경로를 얘기를 할 때예요. 각 지점을 점으로 보통 이거 이제 노드 이런 용어를 쓰기도 합니다. 점으로 놓고 지정을 연결하는 거 선으로 해서 이걸 이렇게 시키는 거를 이런 식으로 이제 지도를 이런 식으로 점과 선으로 재구성해서 그리는 거 이거 우리가 사용했던 말 중에 추상화라는 말을 썼죠. 이게 추상화죠. 결국은 경로의 길이를 수치로 표현하는 거 이것도 다 이게 어차피 다 추상화 과정입니다. 작은 문제들의 결과를 이용해서 조금 큰 문제 이거 이거는 저기 분해하는 거죠. 경로들을 하나씩 분해를 하죠. 추상화시키고 경로 하나씩 하나씩 이렇게 분리를 해서 분해를 하고 그걸로 정리를 하는 게 알고리즘화시키게 되는 거죠. 지금 이제 여러분들 하고자 하는 게 그런 과정들입니다. 이렇게 그림을 이런 식으로 바꾸게 됩니다.
出席者 1 1:06:11 当我们谈论从 a 到 b 的路径时。通常将每个地点视为点,也称为节点。用点和连接点的线来构建,将地图以这种方式重新构建和绘制。这就是我们之前提到的抽象化。最终,将路径长度表示为数值也是抽象化过程。利用小问题的结果来解决稍大的问题,这就是分解。将路径逐一分解,抽象化,然后逐步分离并整理,这就是算法化的过程。这就是你们现在想要做的。这样就可以将图像转换成这种形式。


Attendees 1 1:07:31 1번 1 2 3 4 저렇게 좌표를 학교 집 이거 뭐냐 공원 공원 그리고 우체국 학교 지금 우리가 하려는 거는 1번에서 4번으로 가는 경로를 지금 탐색을 하려고 하는 거죠. 1에서 4로 가는 거 그래서 1에서 4까지 가는 경로를 하나씩 하나씩 탐색을 해서 그걸 가지고 가장 효과적인 길을 찾는 찾는 것을 알고리즘화하는 것을 얘기를 합니다. 오케이 i에서 제로 갈 때 그죠? 이거 여기 있는 것처럼 첫 번째 것과 두 번째 것이 있을 겁니다. 예 지금 굉장히 간단한 예로 가지고 너무나 뻔한 얘기를 지금 하고 있기는 한데 단계 단계별로 여러분 차근차근 생각을 한번 해보세요. 이런 여러분들한테는 사실 이걸 가지고 설명하는 것조차도 약간 민망스러울 정도긴 하지만은 그래도 이걸 가지고 얘기를 하는 게 이유가 있습니다. 하나씩 하나씩 하다 보면은 조금씩 조금씩 복잡도가 올라가게 되는데 갑자기 시작한 것보다 이렇게 조금 처음에는 좀 민망하지만은 이런 거 가지고 일단 시작을 하려고 하는 겁니다.
参会者 1 1:07:31 1 号 1 2 3 4 那样的坐标是学校、家、这是什么、公园、公园,然后还有邮局和学校。现在我们要做的是探索从 1 号到 4 号的路径。从 1 到 4,所以我们要逐一探索从 1 到 4 的路径,并找出最有效的路径,这就是我们要讨论的算法。好的,从 i 到零,对吧?这里会有第一个和第二个。是的,现在举了一个非常简单的例子,说的是很明显的事情,但请大家一步一步地思考。对你们来说,解释这个可能会感到有点尴尬,但是我们这样讲是有原因的。一步一步来,复杂度会逐渐增加,而不是一开始就突然变复杂,虽然一开始可能看起来有点尴尬,但我们就是要从这里开始。


Attendees 1 1:09:01 이렇게 됩니다.
参会者 1 1:09:01 就是这样。


Attendees 1 1:09:09 요거 요거 이렇게 지금 있죠 그죠
参会人员 1 1:09:09 那个 那个 现在是这样 对吧


Attendees 1 1:09:19 길이 i에서 j까지 길이가 있는데 최소 길이 배열을 지금 잡은 거죠. 이렇게 하고 이렇게 한 거 두 가지 요거 하고 요거 이렇게 된 거 두 가지 잡은 거죠. 그래서 그거 중에 요 값과 요 값을 보고 최소값을 i에서 제 값으로 지금 정하는 그런 내용이죠. 예 이렇게 갈 겁니다. 그렇죠.
参会人员 1 1:09:19 从索引 i 到 j 有一个长度,现在抓住了最小长度数组。就是这样做,然后这样做,这两种方式。所以在这两种情况中,通过查看这个值和那个值来确定最小值到索引 i 的这个值。是的,我们将这样进行。对吧。


Attendees 1 1:09:54 우리가 이 정도면은 아마 여러분들 한 1초 1초면은 그냥 바로 이번에 할 정도의 그림이지만은 이렇게 수식화하면은 이렇게 되는 거죠. 여러분들은 지금 이걸 보고 그냥 답만 이거네 할 게 아니라 이것도 같이 생각을 해 주셨으면 좋겠어요.
如果我们达到这种程度,大概在座的各位每 1 秒就能立即完成这次要做的图表,但如果这样数学化的话,就会变成这样。希望各位不仅仅看到答案,还能一起思考这一点。


Attendees 1 1:10:21 저렇게 해서 최솟값을 해서 그거를 ij 값으로 대입을 시켜놓으면은 그렇게 하면 되겠구나 예 그러면 프로그램이 좀 되겠네 이런 식으로 좀 같이 연결시켜서 생각을 같이 해보시면은 이제 앞으로는 그렇게 생각을 해보시면 참 좋겠죠. 그렇죠
如果这样找到最小值,并将其代入 ij 值,就可以这样做,嗯,程序就有点意思了。如果能这样把它们联系起来一起思考,今后就能这样思考,那就太好了,对吧。


Attendees 1 1:10:48 이거를 확장해서 일반화시킨 겁니다. k에서부터 k 1서부터 정점 개수까지 그죠? k는 1에서부터 정점 개수까지, i는 1에서부터 정점 개수까지
与会者 1 1:10:48 这是对其进行扩展和泛化的做法。从 k 到 k 1 开始到顶点数量,对吧?k 从 1 到顶点数量,i 从 1 到顶点数量


Attendees 1 1:11:15 이렇게 하면은 답 나오겠죠 그죠? 일반화 시킨 겁니다. 지금 겨우 딱 그 지점은 3개밖에 없긴 하지만은 이렇게
与会者 1 1:11:15 这样做就能得到答案,对吧?这是泛化的做法。现在虽然只有 3 个点,但是这样


Attendees 1 1:11:38 값 보고 비교해서 써준 거죠. 요 두 값 더해서
与会者 1 在 1:11:38 查看值并进行比较后填写。这两个值相加


Attendees 1 1:12:07 어떻게 이렇게 이렇게 하면은 될 것 같은가요?
与会者 1 在 1:12:07 问:如果这样做,是否可行?


Attendees 1 1:12:15 포문을 지금 이 여러분 이 프로그램 이렇게 짜는 거 이거 굉장히 안 좋은 예입니다. 솔직히 얘기하면은 별로 좋은 예가 아니에요. 이렇게 막 이게 별로 좋은 예는 아닙니다. 근데 그냥 개념을 설명을 하기 위해서 이렇게 해놓은 것뿐이에요. 예 이렇게 하는 거는 그다지 권할 만한 프로그램 방법은 아니라고 생각을 해요. 저는 하여튼 포문을 이렇게 막 3중으로 해갖고 막 이렇게 물론 필요하면 그러니까 저렇게 3중으로 쓰는 게 나쁘다는 게 아니라 지금 이거 같은 경우는 이런 식으로 돌리는 거는 보다는 조금 더 좀 효율적인 방법을 생각을 해볼 필요는 있겠지만 어쨌든 내용상으로는 저렇습니다. 예 이렇게 해서 화면은 단거리를 찾을 수 있는 방법이 저기 수식에서 이제 단거리 찾는 방법이 나오게 되죠.
与会者 1 1:12:15 现在这种使用 for 循环的方式,这个程序的编写方式是非常不好的。坦白说,这并不是一个很好的例子。这种方式确实不是很好的示范。但这只是为了解释概念而这样做的。是的,这种做法并不是我推荐的编程方法。无论如何,我认为使用三重嵌套的 for 循环,当然如果需要的话,我并不是说三重循环本身就是不好的,但在这种情况下,与其这样循环,不如考虑一些更高效的方法。无论如何,内容就是这样。是的,通过这种方式,屏幕可以找到短距离,这在公式中会体现出来。


Attendees 1 1:13:20 이렇게 테이블을 만들어서 사용을 하게 됩니다. 지금은 이제 노드가 4개뿐이라서 간단하게 요 한눈에 이렇게 테이블이 보이니까 예로 이제 간단하긴 하지만 이게 로드가 이제 막 8개 16개 막 이렇게 늘어나면은 이 테이블 가지고 사람이 이렇게 할 일이 아니죠. 예 그럴 때는 이제 프로그램으로 하는 게 물론 당연히 그렇게 해야겠죠. 그렇죠 저거를 사람이 손으로 할 일은 아니죠.
与会者 1 1:13:20 就是这样创建并使用表格。现在由于只有 4 个节点,所以这个表格很简单,一眼就能看清。但如果节点增加到 8 个、16 个,这种手工方式就不再适用了。是的,到那时就需要使用程序来处理。当然,必须那样做。对吧,这不是人工可以手动完成的工作。


Attendees 1 1:13:58 이거를 이제 어떻게 이게 테이블이 어떻게 어떤 내용을 가지고 이게 찾아가는지를 한번 하나씩 하나씩 천천히 살펴보시면은 이 알고리즘이 굉장히 재미있는 알고리즘이라는 게 보이게 되실 겁니다. 직접 가는 경로가 없으면 무한대 예 일단 찾기 전에 경로를 무한대로 놓는 거 이거 경로 탐색 알고리즘에서 종종 사용하는 방법이거든요. 내가 확인되기 전까지는 그냥 무한대라고 해버리는 겁니다. 0이라고 할 수는 없고 0이면은 그냥 지금 현재 위치가 돼버리니까 0이라고 할 수 없고 그렇다고 해서 그냥 마냥 큰 수 아무 수나 그냥 큰 거 100이나 천이나 만이나 이런 걸 갖다가 대입해 놓을 수가 없죠. 그러다가 나중에 그 값이 사용이 되게 되면은 큰일 나죠. 예 그래가지고 경로가 그러니까 값을 모를 때는 무한대로 그냥 놔버리는 그런 이 방식을 종종 씁니다. 그러니까 요거 무한대 쓴다는 거 살짝 기억을 좀 해 주시면 좋을 것 같고요. 여기뿐만 아니라 경로 알고리즘에서 종종 쓰는 방법 중에 하나입니다.
当你一步一步仔细查看这个表格是如何找到内容的时候,你会发现这是一个非常有趣的算法。如果没有直接路径,就设为无穷大 - 这是路径搜索算法中经常使用的方法。在确认之前,就将其设为无穷大。不能设为 0,因为 0 就变成了当前位置;也不能随意设置一个很大的数,比如 100 或 1000,否则之后使用这个值会出大问题。所以当不知道值时,通常会将其设为无穷大。希望大家记住这个使用无穷大的方法,这不仅仅适用于这里,也是路径算法中常用的技巧之一。


Attendees 1 1:15:19 무한대로 우리 초기 값을 0으로 놓고 하는 것 대신에 여기서는 그냥 무한대로 놓습니다. 예 저기 우주 어디 끝에 가 있다 이렇게 생각을 해버리는 겁니다. 현재 위치가 저 우주 저기 문화계 너머 어딘가에 있다 이렇게 해버리는 거예요. 일단 예 그러고 나서 이제 끌고 오는 거죠. 경로가 물론 있으면은 입력을 하고 모르거나 없는 상태면은 그냥 무한대다 이렇게 해버리는 겁니다. 예 그렇게 해서 이 테이블을 만든 겁니다. 이걸 보고서 이 테이블을
与其将初始值设为 0,不如在这里直接设为无穷大。就好像它在宇宙的某个尽头一样。将当前位置想象成在宇宙文化圈之外的某个地方。然后,如果有路径就输入,如果不知道或没有路径,就设为无穷大。就是这样创建了这个表格。通过这个表格,我们可以看到...


Attendees 1 1:16:01 저렇게 만들어 놓고 이제 저 테이블을 하나씩 하나씩 업데이트해 가면서 경로를 찾아갈 겁니다. 지금 앞에 요 해놓은 거 이거에 대한 얘기입니다. 이건 지금 프로그램 먼저 보여줬는데 그거는 이제 이게 프로그램 만들기 전에 알고리즘을 이제 지금 짜기 위해서 이런 식으로 지금 구성을 하고 있는 겁니다. 알고리즘이 없다라고 생각을 하고 내가 지금 이거를 탐색하는 알고리즘을 만들겠다라고 생각을 하는 상태에서 이걸 한번 봐보시기 바랍니다. 그러면 좀 더 보는 게 조금 더 집중하기가 좋으실 거예요. 이 알고리즘이 어떻게 돼 있느냐 그거를 찾는다고 생각할 게 아니라 그걸 이 알고리즘이 어떻게 돼 있는지를 한번 보자라는 식이 아니라 요거를 경로를 탐색하는 알고리즘을 내가 한번 만들어보자 이런 식으로 생각해서 보시면은 좀 더 보시는데 더 생각을 조금 더 넓게 하실 수 있을 겁니다. 경로 얘기 지난번에도 하다 말고 오늘도 하다 마네. 또 가만히 있어 봐. 출석 출석합시다. 시간 다 돼버렸네.
我们会这样创建表格,然后逐步更新这些表格以找到路径。现在我正在谈论前面准备好的这个。这是在展示程序之前,为了编写算法,我正在这样构建。想象一下没有算法,我现在要创建一个探索算法。希望你们能这样观察。这样会更容易集中注意力。不要考虑算法是如何运作的,而是尝试思考如何创建一个路径搜索算法。这可能会帮助你们更广泛地思考。上次关于路径的讨论还没结束,今天又中断了。先等一下。点名时间到了。


Attendees 1 1:17:18 이게 1시간 반이 좀 그래. 그리고 이런 거 얘기할 때는 천천히 좀 느긋하게 보면서 해야 되는데
这大概一个半小时了。讨论这类问题时,应该慢慢地、悠闲地观察和讨论。


Attendees 3 1:18:08 시간이 조금 지나갔네.
参会者 3 1:18:08 时间过得很快啊。


Attendees 1 1:19:01 732번입니다.
参会者 1 1:19:01 是第 732 号。


Attendees 1 1:19:09 이걸로 출석 체크해 주시고요.
出席者 1 1:19:09 请用这个进行出席签到。


clovanote.naver.com