Is Life an Algorithm? If Yes, Then What Are Those Algorithms in Everyday Life?

“Algorithms are as important to programming as brains are to human”
What are Algorithms?

Every time you click the search button on Google, the search engine surfs through millions of websites, to hand you the content you are seeking on search results page within a blink. Or even when we, as humanity, viewed  the first ever black hole image. What makes this possible is not a form of  magic, it is the underlying algorithm—a set of mathematical rules to follow in order to solve a problem embedded in the software.

Technically, Algorithms are invisible pieces of code that tell computer a set of steps on how to accomplish a specific task. It is really nothing more than a recipe: a series of steps that tell the computer what to do and  can be re-run as often as you like in order to produce a certain outcome. It is also used to manipulate data in various ways, such as inserting a new data item, searching for a particular item or sorting an item. Computers use algorithms to list the detailed instructions for carrying out an operation. In computer programming, there are often many different ways -- algorithms -- to accomplish any given task. Each algorithm has advantages and disadvantages in different situations.

One of the most storied algorithmic problems in all of computer science is ‘sorting’, allowing us to sort alphabetical or numerical data. A Sorting Algorithm is used to rearrange a given array or list of elements according to a comparison operator on the elements. The comparison operator is used to decide the new order of elements in the respective data structure. Computers sort data all of the time, examples include looking for the cheapest airfare, arranging your memos by most recently noted or scrolling your emails by last name...all require sorting. You might think sorting seems like a very simple function, how many algorithms can there possibly be… the answer is a lot. Computer scientists have spent decades inventing algorithms for sorting with names like Bubble sort, Merge sort, Quicksort etc. It because

Algorithms are typically constructed on a case-by-case basis, being adapted to the problem at hand. Therefore, by knowing the strengths and weaknesses of the different algorithms, you can pick the best for the task at hand.

We will not  delve too deeply into  particularly technical algorithms right now,  but we will shift our focus to see how algorithms play a role in daily basis more, as it is fundamental to understand the concept of how algorithms work and what are the solutions they contribute to daily life. In a non-technical approach, you might have algorithms for your simple daily routines like getting from home to work, making a vegan salad bowl, or finding what you should buy in a grocery store. Also, when you do a Google search or scrolling at your social media feed or use GPS navigation in your car, you’re interacting with an algorithm.‍

How can we bring algorithmic thinking into our everyday lives?

The algorithm is the basic technique used to get the job done. Let's follow an example to help get an understanding of the algorithm concept. How about tidying up your room by organizing your stuff faster using a variety of sorting algorithms?

If you have heard about Marie Kondo from her bestselling book, The Life-Changing Magic of Tidying Up, you might notice her tidying method that could be called as Marie’s algorithm to tackling your stuff category-by-category rather than room-by-room. Her method is pretty straightforward by going through each and every thing you own, category by category, hold it close to decide whether it “sparks joy”, then discard it if it doesn’t, or store it tidily if it does. I personally thought we could get inspired by Kondo’s style and come up with the creative and meaningful algorithms to make tidying faster and easier by using a sorting algorithm.

There are 3 main algorithmic tips on putting your house in order.

1. Bubble sort. It is the simplest sorting algorithm that works by repeatedly swapping the adjacent elements if they are in wrong order. When you start to tidy up, you start to compare two items at a time and put them in the right order, going through all pairs of items one by one and swap them if their order is wrong. Once you’re through the list, start over until you don’t have to swap anything anymore. Perfect for sorting books and CDs! Then we could blend Kondo’s rule to ask whether each item spark joy to us or in other words do they mean something to you.

2. Insertion sort. Imagine that you are playing a card game. You're holding the sorted cards in your hand. The dealer hands you exactly one new card. You have to put it into the correct place so that the cards you're holding are still sorted. In the case of tidying your room, it is ideal for organizing your clothes in the wardrobe.  This algorithm is not providing the exact step by steps cue. You need to take out the clothes from where they belong to be organized and then insert them in the right order. You can easily rearrange the shade of your clothes from the lightest tone to the darkest tone by this algorithm.

3. Merge sort. It repeatedly breaks down a list into several sublists until each sublist consists of a single element and merges those sublists into a manner that results into a sorted list. This method is only recommended to use when you move to the new house or empty space. It works by dividing all of your collections into multiple piles of categories, sorting the piles by room and dictating where your different possessions belong. ,Later re-assembling the sorted piles to get a full solution and unpacking your stuff in the right order.

Speaking of which, particular algorithms serve specific tasks at hand. Our brains use algorithms all of the time to approximate incomplete information or focus on just the essential facts at hand. This allows us to make a decision and  save our efforts. It also provides understanding  behind the concept of algorithm, whilst providing  actionable advice to assist in sourcing solutions all sorts of real-life problems.

Interestingly, there is a question often asked, what actually algorithm looks like? Undeniable, most of us can see how algorithms work and their solutions have been manifested all around us, all over the world. Hence, most of us still don’t know what actually they are or even how we’re being influenced by them. The issue on the state of transparency; how its algorithmic work when it comes to decision making and uncertainty has been raised together with concerned of prejudice. We will talk about this topic next time.

“อัลกอริทึมสำคัญต่อโปรแกรม เหมือนกับที่สมองสำคัญต่อมนุษย์”
อัลกอริทึมคืออะไร?

ทุกครั้งที่เรากดค้นหาข้อมูลบนกูเกิล ระบบค้นหาของกูเกิลจะค้นหาข้อมูลนั้นๆ ผ่านเว็บไซต์กว่าล้านๆ เว็บไซต์ในชั่วพริบตาเพื่อให้ได้มาซึ่งข้อมูลที่เราต้องการ ความน่ามหัศจรรย์ใจนี้เกิดขึ้นจากการทำงานของอัลกอริทึม หรือชุดคำสั่งทางคณิตศาสตร์ที่ระบุลำดับขั้นตอนในการแก้ไขปัญหานั่นเอง หรือแม้แต่ผลงานภาพถ่ายหลุมดำภาพแรกของโลกล่าสุดก็อาศัยหลักการทำงานของอัลกอริทึมเช่นเดียวกัน

อัลกอริทึม คือชุดคำสั่งที่กำหนดลำดับขั้นตอนในการทำงานให้กับคอมพิวเตอร์ เพื่อให้คอมพิวเตอร์สามารถทำงานตามเป้าหมายที่เราต้องการได้ อัลกอริทึมยังช่วยจัดการข้อมูลได้หลากหลาย ไม่ว่าจะเป็นการเพิ่มข้อมูลใหม่ลงไปในชุดข้อมูลเดิม หรือการค้นหาข้อมูลจากฐานข้อมูลที่มีอยู่แล้ว โดยโปรแกรมคอมพิวเตอร์หนึ่งๆ อาจจะใช้อัลกอริทึมที่หลากหลาย ขึ้นอยู่กับจุดประสงค์ในการใช้งาน หรือแม้แต่อัลกอริทึมที่มีจุดประสงค์ในการใช้งานที่คล้ายคลึงกัน ก็อาจจะแบ่งย่อยได้เป็นอีกหลายประเภท ซึ่งผู้ใช้ต้องพิจารณาข้อดี-ข้อเสีย และเลือกใช้อัลกอริทึมที่เหมาะสมกับงานมากที่สุด

ยกตัวอย่าง เช่น Sorting Algorithms หรือ อัลกอริทึมที่ช่วยจัดเรียงลำดับ ซึ่งเราพบได้บ่อยในการใช้งานคอมพิวเตอร์ ไม่ว่าจะเป็นการเรียงชื่อไฟล์ตามวันเวลาที่บันทึก การค้นหาตั๋วเครื่องบินจากราคาที่ถูกที่สุดก่อน หรือการเลื่อนเช็คอีเมลที่ยังไม่ได้อ่าน โดยอัลกอริทึมนี้สามารถแบ่งย่อยได้เป็น Bubble Sort, Insertion Sort, Merge Sort ฯลฯ ซึ่งแต่ละประเภทก็จะมีความแตกต่างกันออกไปตามวิธีการเรียงลำดับที่แตกต่างกัน

อัลกอริทึมในชีวิตประจำวันมีอะไรบ้าง?

การจัดบ้านนับว่าเป็นการใช้อัลกอริทึมอีกรูปแบบหนึ่ง โดยลำดับขั้นตอนในการจัดที่ดีและเหมาะสมจะช่วยทำให้เราจัดห้องได้รวดเร็วและมีประสิทธิภาพมากยิ่งขึ้น หากใครเคยดูสารคดี Netflix หรือรู้จักผลงานเขียน “The Life-Changing Magic of Tidying Up” ของมารี คอนโดะ ที่ปรึกษาด้านการจัดบ้านชาวญี่ปุ่น จะพบว่าวิธีการจัดบ้านของเธอก็เป็นอัลกอริทึม ที่เราสามารถนำมาประยุกต์ใช้กับการจัดบ้านหรือจัดห้องของตัวเอง หรือแม้แต่ประยุกต์ใช้กับการแก้ไขปัญหาในชีวิตประจำวันได้

เพื่อให้เห็นภาพการใช้อัลกอริทึมในชีวิตประจำวันที่ชัดเจนยิ่งขึ้น วันนี้เราจะอธิบายการทำงานของ Sorting Algorithms ประเภทต่างๆ เทียบเคียงกับการจัดบ้านในชีวิตประจำวัน  

1. Bubble sort เป็นอัลกอริทึมจัดเรียงลำดับ ที่อาศัยการเปรียบเทียบของสองสิ่งที่อยู่ติดกัน แล้วจัดลำดับว่าของสองสิ่งนั้น สิ่งใดควรอยู่หน้าหรือหลัง จากนั้นก็จะเปรียบเทียบต่อไปเรื่อยๆ จนกว่าจะจัดเรียงสำเร็จ เหมือนเวลาที่เราต้องการจัดเรียงหนังสือที่อยู่บนชั้นวางใหม่ทั้งหมดตามตัวอักษร เราจะเทียบหนังสือคู่แรก แล้วจัดเรียงลำดับว่าเราควรวางเล่มไหนก่อนหลัง หลังจากนั้นก็จะเทียบหนังสือเล่มถัดไปกับเล่มก่อนหน้านี้ ทำเช่นนี้ไปเรื่อยๆ จนกว่าจะจัดหนังสือเสร็จ

2. Insertion sort เป็นอัลกอรึทึมที่นำส่วนที่ยังไม่ได้จัดเรียง เข้าไปใส่ในส่วนที่จัดเรียงแล้ว เหมือนเวลาที่เราเล่นไพ่ แล้วเราจัดลำดับไพ่ในมือเรียบร้อยแล้ว หลังจากนั้นเราได้ไพ่ใบใหม่มา เราจะต้องนำไพ่ใบใหม่นี้ไปเทียบกับไพ่ใบอื่นๆ ในมือ เพื่อเสียบไพ่ใบใหม่เข้าไปในตำแหน่งที่เหมาะสม ถ้าพูดถึงการจัดห้อง ก็เหมือนกับการที่เราซื้อเสื้อตัวใหม่หรือเสื้อสีใหม่มา แล้วเราต้องการเอาเสื้อตัวใหม่นี้เข้าไปแขวนในตู้เสื้อผ้าที่เราจัดเรียงไว้เรียบร้อยแล้วนั่นเอง

3. Merge sort เป็นอัลกอริทึมจัดเรียงลำดับ ที่เริ่มต้นด้วยการแบ่งองค์ประกอบทั้งหมดออกเป็นส่วนๆ หรือเป็นประเภทย่อยๆ  จากนั้นจะจัดเรียงลำดับในประเภทย่อยๆ นั้นก่อน แล้วจึงนำประเภทย่อยๆ ที่จัดเรียงลำดับแล้ว ไปจัดเรียงตามลำดับรวมกันอีกที เหมือนเวลาที่เราจัดตู้เสื้อผ้าใหม่ เราจะแยกเสื้อผ้าออกมาเป็นกองๆ ข้างนอกก่อน ว่ากองนี้คือเสื้อ กองนี้คือกางเกง และกองนี้คือชุดชั้นใน หลังจากนั้นเราจะจัดเรียงลำดับของเสื้อผ้าแต่ละกองก่อน แล้วจึงนำเสื้อผ้าแต่ละกองที่จัดเรียงแล้ว ไปจัดเรียงลงตู้ตามลำดับอีกที

นอกจากการจัดห้องแล้ว เรายังใช้อัลกอริทึมในชีวิตประจำวันอยู่ตลอดเวลา ตั้งแต่การออกจากบ้านไปทำงาน การทำอาหาร การขึ้นรถลงเรือ ซึ่งล้วนแต่ใช้ลำดับขั้นตอนในการทำงานด้วยกันทั้งสิ้น โดยสมองของเราอาศัยอัลกอริทึมในการจัดเรียงข้อมูลที่ยุ่งเหยิงให้เป็นระเบียบเรียบร้อย เพื่อช่วยให้เราสามารถตัดสินใจ และดำเนินงานได้อย่างมีประสิทธิภาพ ทำให้เราสามารถแก้ไขปัญหาในชีวิตประจำวันได้

อย่างไรก็ตาม ยังมีข้อถกเถียงกันอยู่ว่าการใช้อัลกอริทึมในการกำหนดลำดับขั้นตอนในการทำงาน และการตัดสินใจต่างๆ มีความถูกต้องและความยุติธรรมหรือไม่ ซึ่งในประเด็นเรื่องความโปร่งใสในการใช้อัลกอริทึมนี้ เราจะมาคุยกันต่อในบทความต่อไป

References:

https://www.bbc.com/bitesize/articles/z3whpv4

http://www.slate.com/articles/technology/future_tense/2016/02/what_is_an_algorithm_an_explainer.html

https://www.cs.cmu.edu/~adamchik/15-121/lectures/Sorting%20Algorithms/sorting.html

https://konmari.com/

http://algorithmstoliveby.com/

Written By: