プログラミングアルゴリズムと人生の選択

プログラミングアルゴリズムと人生の選択

毎年、就職活動の時期になると、どうやって内定を選んだらいいのか、テンセントに行くべきか豆板に行くべきか、外資系企業に行くべきか国内企業に行くべきか、起業すべきか大学院入試を受けるべきか、北京に来るべきか地元に帰るべきか、イノベーションワークスに行くべきかどうかなど、たくさんの質問メールが届きます。 ThoughtWorksに行くべきでしょうか? …等々。今年7月から現在までに、私は60通以上のそのようなメールを受け取り、返信してきました。私は彼らの考えを整理し、彼らが最も望んでいることを理解するのを手伝います。 (注:今後、同様のメールには返信しません)。

私たちの国で親や教師があらゆることを手配して育ってきた私たちのような人間にとって、ある日親や教師が対応できなくなったとき、どのように選択をしたらよいのかほとんどわからなくなるということを深く理解しました。そして最近、私はアマゾンを辞めて転職しました。今年も年末になりましたが、昨年の記事「3つの物語と3つの疑問」と同様に、今年もこのような記事を書こうと思いました。

いくつかの例

都市、企業規模、企業の性質、給与、プロジェクト、世帯登録、テクノロジー、方向性、ビジョンなど、私たちの選択に影響を与えるさまざまな要因に直面すると、常に複数の企業の間で何らかの問題に巻き込まれることになります。以下にいくつかの例を示します。

  • あるネットユーザーは、規模が大きいからという理由で上海のテンセントに入社したが、給料は豆板ほど高くなかった(かなり低かった)と私に言った。将来転職したい場合、初任給は将来の高給に直結する。私は豆板に行こうと言いましたが、彼は豆板は北京にあり、汚染がひどく、戸口がないと生活環境が良くないと言いました。私はテンセントに行くことを提案したが、テンセントは最近組織調整を行っており不安定だと言った。それなら、ゆっくりと着実に発展している Douban に行ってください、と私は言いました。同氏は、Douban の収益性は不明瞭であり、Python を使用していた点が気に入らないと述べた。テンセントに行こうって言ったんだけど…
  • 別のネットユーザーは、故郷にはより良いコネクションがあり、人生がうまくいく可能性があるので、故郷に戻りたいと私に話した。しかし、視野を広げるためにも大都市に留まりたいと思っています。
  • 別のネットユーザーは、英語を練習し、視野を広げるために外資系企業に入社したいが、単なる歯車になってしまい自分のアイデアを実行できないのではないかと不安だと私に話した。友人は彼にビジネスを始めるよう頼みました。起業は良い考えだし、多くの訓練にもなるだろうと考えたからです。しかし、友人がそれをうまくできるかどうかはわかりませんでした。
  • 別のネットユーザーは、イノベーションワークスのチームに入るか、大学院入学試験を受けるかの選択をしています。イノベーションワークスのプロジェクトは平均的だと思うので、参加できるかどうかはわかりませんが、チームは非常に熱心だと感じています。一方で、自分の学歴が十分ではなく、大学院の学位を取得すればもっと良い仕事が見つかるはずだと感じています。
  • 友達の中には、どんな技術を学べばいいのかと尋ねる人もいました。学ぶべきではないスキルは何ですか?あるいは、最も速く学ぶにはどうすればいいでしょうか、技術的な道筋はどうあるべきでしょうか?バックエンドだけを担当し、フロントエンドは担当しないという人もいれば、アルゴリズムの研究だけを担当し、エンジニアリングは担当しないという人もいます。人生には限りがあり、誰もが自分の得意分野を持っていると感じているからです。
  • 待って、待って…

個人的には、コンピュータサイエンス専攻の家庭に生まれなければ、選択ができず、どの道を進むべきか分からないと思います。しかし、コンピュータサイエンス専攻の家庭に生まれた私たちはアルゴリズムを学んでおり、アルゴリズムを理解している人は選択の仕方を知っているはずです。

ソートアルゴリズム

すべてを手に入れることはできないので、自分にとって最も重要なものだけを望むことができます。何が最も重要であるかを知りたい場合は、自分の心の中の欲望と野望を明確に理解する必要があります。そうしないと、絡み合いに巻き込まれてしまいます。

したがって、選択に苦労している人は、ソートアルゴリズムを参照する必要があります。

  • まず、最も参照する必要があるのは「バブルソート」です。このアルゴリズムの考え方は、毎回ランダムな数字をバブルアウトすることです。したがって、自分の選択に影響を与える要因のうち、1 つしか選択できない場合はどれを選択するかを自分自身に問いかける必要があります。残りは放棄することができます。したがって、数字を一つずつ泡立てて、この決定要因を使用してオプションをフィルタリングすると、何を選択すべきかがより簡単にわかるようになります。このアルゴリズムによれば、気が散る要素が少ないほど、選択が容易になります。
  • さて、おそらくあなたは 2 つの決定要因の大きさをどのように比較するかについて混乱しているのではないでしょうか。たとえば、給与 > ビジネスの見通しのどちらが重要かがわからない、などです。事業展望 > 能力向上?つまり、バブリング法を実行する方法は絶対にありません。次に、「クイックソート」というアイデアを参考にするといいでしょう。このアルゴリズムは、最初に最も高い数字を見つける必要がないことを示しています。価値体系から特定の基準を取り出し、その値を満たすものを右側に、満たせないものを左側に配置するだけでよいのです。たとえば、給与が 5,000 元を超え、事業見通しが 3 年を超える企業を基準とする場合は、この基準を使用してオプションをフィルタリングできます。その後、基準を調整して再帰的に続行できます。このアルゴリズムによれば、選択基準が明確であればあるほど、選択が容易になります。

これらは最も古典的な 2 つのソート アルゴリズムであり、面接でテストされます。あなたはすでにそれを暗記していると思います。したがって、このアルゴリズムを人生の選択に適用することは問題にならないと思います。問題は、あなたが何を望んでいるか知っているかどうかです。

ソート アルゴリズムの中心的な考え方は、最も必要なものと最も欲しいものを認識し、それに基づいて選択できるようにすることです。

貪欲アルゴリズム

いわゆる貪欲アルゴリズムは、結果が最良または最良になることを期待しながら、各ステップで現在の状態(注: 現在の状態)で最良または最良(つまり最も好ましい)選択を行うアルゴリズムです。貪欲アルゴリズムの最も典型的な例はハフマン符号化です。

人間の場合、ほとんどの人は物事を行うときに貪欲なアルゴリズムを使用します。

  • 例えば、お釣りを渡すときに、36元を渡す必要がある場合、通常は20元、10元、5元、1元の順番でお釣りを渡します。
  • または、交差点を渡っているときに対角ブロックに行きたい場合も、貪欲アルゴリズムを使用します。つまり、最初に青信号が点灯する側に行き、次に 90 度回転して赤信号が点灯するのを待って道路を渡ります。

そういった例はたくさんあります。選択をするとき、ほとんどの人は比較的単純なアルゴリズムである貪欲アルゴリズムを選択します。未来はあまりにも複雑なので、一度に一歩ずつ進み、現在の状況下で自分にとって最善の判断と選択を行うことしかできません。

給料に貪欲な人もいれば、プロジェクトに貪欲な人もいれば、ビジネスに貪欲な人もいれば、地位に貪欲な人もいれば、自分の利益に貪欲な人もいます...これらには何も問題はありません。貪欲アルゴリズムには何ら問題はありません。これは最適なグローバル ソリューションではありませんが、ローカルの最適なソリューションや次善のソリューションを見つけるのに役立ちます。実際のところ、最適ではない解決策があるのは良いことです。貪欲アルゴリズムは、基本的に、素早い成功と即時の利益を求めるアルゴリズムですが、だからといって悪いアルゴリズムというわけではありません。貪欲が長期的かつ持続可能なものであれば、悪い考えではありません。 。

動的プログラミング

しかし、ほとんどの問題では、貪欲法では一般にすべての可能な解決策をテストしないため、通常は最善の解決策を見つけることができないことが分かっています。貪欲アルゴリズムは近視眼的な動作であるため、現在の状況に基づいて判断するだけであり、つまり決定が早すぎるため、最善の解決策に到達できません。

動的プログラミングと貪欲アルゴリズムの最大の違いは、貪欲アルゴリズムでは選択が行われ、元に戻ることができないことです。動的プログラミングでは、以前の計算結果を保存し、以前の結果に基づいて現在の選択を行い、ロールバック機能を備えています。

動的プログラミング アルゴリズムは、少なくとも次の 2 つのことを教えてくれます。

  1. 過去と未来を結びつけることは非常に重要です。トラバースする準備ができたら、過去の経験は将来の経験を切り開くだけでなく、将来の経験にも役立ちます。あなたが踏み出す一歩は決して無駄にはなりません。
  2. ロールバックが可能かどうかも重要です。つまり、目の前に 2 つの選択肢があり、1 つは会社 A で、もう 1 つは会社 B である場合、今日会社 B を逃しても、明日取り戻すことができるのでしょうか?

たとえば、2 つのオファーがあり、1 つは Yahoo から、もう 1 つは Baidu からだとします。上記の点から、Yahoo と Baidu のどちらが私たちにとってより大きなプラットフォームを開くことができるのかを考えることができます。 上記の 2 番目のポイントは、Yahoo に参入した後に正しい選択をしなかった場合、Baidu に戻ることはできるのか、ということを示しています。それとも、百度に入社した後、ヤフーに戻るのは簡単なのでしょうか?

ダイクストラ最短経路

最短経路は、Greedy + DP アルゴリズムです。かなりクラシックですね。このアルゴリズムの一般的な考え方は次のとおりです。

  • 初期化時には、すべてのノードが私に無限に近い状態になりますが、デフォルトでは到達不可能です。
  • 最も近いノードから貪欲に開始します。
  • 歩いて、どのようなノードに到達できるかを確認し、すべてのターゲット ポイントまでの距離を計算して更新します。
  • 次に、原点までの距離が最短のノードを貪欲に選択し、このプロセスを繰り返します。

このアルゴリズムにより、いくつかの洞察が得られます。

  • ある友人は、建築家か特定の技術分野の専門家になりたいと言っていました。彼はその目標に向かって着実に努力し、決して諦めないと言っていました。私は彼を励まし続けましたが、この有名なアルゴリズムも教えました。このアルゴリズムは、あなたと建築家や特定の分野の専門家との距離が現時点では無限大であることを教えてくれると言いました。それを心に留めて、まず何が得られるか考えてみてください。現実的であるということは、現実的な方法で目標を追求するということではなく、自分の手の届く範囲にあり、周囲で目に見える範囲のことをうまくやるということです。地元を離れて就職したばかりの頃、技術者になろうとは思ってもいなかったし、自分のブログがこれほど影響力を持つようになるとも思っていなかったことを今でも覚えています。自分の能力の範囲内で、目に見えるもの、触れるものをやっていました。目にした技術は何でも学び、学んでいくうちに、より簡単に、より確実に学ぶ方法を見つけました。これが私の最短の道なのかもしれません。
  • 多くの友人から、C++ を学ぶべきか、Python や Ruby を学ぶべきか、フロントエンドを学ぶ必要はないのか、などと聞かれました。これらの友人たちは、使わないと忘れてしまうし、それぞれが自分の専門知識を持っているので、複数の言語を学ぶのは不可能だと言いました。これには何も問題はありませんが、個人的には、何かを学ぶには必ずしも 2 つの状態、つまり、学んでいない状態と習得している状態だけがあるわけではないと感じています。技術を理解するのにそれほど時間はかかりません。Java をより深く理解するために C++ を学び、ソケット プログラミングをより深く理解するために TCP/IP プロトコルを学びました。多くのことは関連し、補完し合っています。C/C++/Unix/TCP などの基本的な技術を学んだ後、他の技術への道が短くなったことに気づきました (これが、Go 言語を 2 日で学んだ理由です)。それはこのアルゴリズムのようなものです。このアルゴリズムは効率的ではありません。目標を達成するために、最初は長い時間を費やし、多くの場所を横断するかもしれませんが、これが最短のパスである可能性があります。

アルゴリズムはトレードオフ

望むものをすべて手に入れることはできません。どんな選択も諦めることを意味します。何かを手に入れたいときは、必ず何かを諦める必要があります。人生はシーソーのようなものです。片側が上がれば、もう片側は必ず下がります。これは、ソフトウェア設計やアルゴリズム設計を行うときに、時間を空間と交換し、空間を時間と交換し、CAP 理論を適用する場合と同じです。このフレーズの本来の意味どおり、常に多くのトレードオフが存在します。つまり、常に何かを何かと交換する必要があるのです。

私たちは皆、何かを使って未来を交換しています。自分の努力を交換する人もいれば、自分の考えを交換する人もいれば、若さを交換する人もいれば、自分の自由を交換する人もいれば、自分の価値観を交換する人もいれば、自分の道徳観を交換する人もいます。お金を交換する人もいれば、ビジョンを交換する人もいれば、経験を交換している人もいれば、地位を交換する人もいれば、能力を交換する人もいれば、自由を交換する人もいれば、利益を交換する人もいれば、虚栄心を交換する人もいれば、快適さと楽しみを交換する人もいます。

誰もが独自のアルゴリズムを持っており、各アルゴリズムには独自の目的があります。全員が同じアルゴリズムを使用していたとしても、各人のアルゴリズム内の変数、スイッチ、条件は異なり、得られる結果も異なります。私たちはマトリックスに生きるプログラムです。私たちのアルゴリズムはそれぞれ選択を決定し、選択が私たちの人生を決定します。

オリジナルリンク: http://coolshell.cn/articles/8790.html

<<:  アルゴリズムの練習: 数独の基本解法

>>:  文字列マッチングのためのKMPアルゴリズム

ブログ    
ブログ    

推薦する

Github で最も注目されている機械学習イノベーション プロジェクト 7 つ

最新の機械学習開発と最先端のコードを持つプラットフォームはどれでしょうか? そう、GitHub です...

JD.com は今後 10 年間で従業員の 50% を解雇するでしょうか?ジャック・マー氏も人工知能が仕事を奪うことについて言及している

最近、劉強東氏は、今後10年間でJD.comの従業員数を現在の16万人から8万人に減らし、1人当たり...

新しい小売業界における人工知能の応用

インターネットの急速な発展に伴い、伝統的なオフライン小売チャネルは弱体化の兆候を見せ始めており、中国...

AIの次の目的地:リアルタイムサービス

リアルタイムサービスの波が徐々に私たちの日常生活に浸透するにつれ、コンピューティングインフラストラク...

AIと建物の運用: 人、データ、信頼の基盤の構築

最近では、人工知能とそのサブセットである機械学習が注目のキーワードになっています。ディープフェイク、...

...

人工知能は人間を管理することを学んでいます。将来、人工知能は人間の世界を支配するのでしょうか?

人間は自分たちが偉大だと思っているが、個々の人間は非常に弱い。人類は素晴らしい文明を築き上げましたが...

...

...

なぜ中国はアメリカや日本を抜いて人工知能で世界をリードしているのでしょうか?

[[279809]]北京は世界で最も人工知能企業が集中している都市であり、中国の人工知能分野は世界...

ターゲット検出アルゴリズムにおける正長方形と不規則四辺形 IOU の Python 実装

交差対結合 (IoU) は、ターゲット検出で使用される概念です。ターゲット検出アルゴリズムをテストす...

ChatGPT をベースにしたインテリジェントな顧客サービス アシスタント

導入従来の顧客サービス分野は、手作業に大きく依存し、データ集約的であることが特徴です。大量のユーザー...

3年間の車両インターネット無料化により、自動運転の産業化が加速

最近、国家発展改革委員会と財政部は、新技術と新事業の発展を奨励するために、5905-5925MHz周...

...