Greedy Algorithm and Dynamic Programming

Greedy Algorithm and Dynamic Programming

In an algorithm design there is no one 'silver bullet' that is a cure for all computation problems. Different problems require the use of different kinds of techniques. A good programmer uses all these techniques based on the type of problem. In this blog post, I am going to cover 2 fundamental algorithm design principles: greedy algorithms and dynamic programming

Divide and Conquer Algorithms

Divide and Conquer Algorithms

A very popular algorithmic paradigm, a typical Divide and Conquer algorithm solves a problem using following three steps:

  • Divide: Break the given problem into subproblems of same type.

  • Conquer: Recursively solve these subproblems

  • Combine: Appropriately combine the answers

Datacast Episode 3: How to Be a Social Media Data Whiz with Leni Krsova

Datacast Episode 3: How to Be a Social Media Data Whiz with Leni Krsova

Leni Krsová is social media data analyst from the Czech Republic, currently based in Prague. At the beginning of her career, she worked for Czech TV, a public broadcaster in the country, as a social media editor but switched quickly from marketing to the path of a data analyst. Since then she is interested more and more in data analysis of social media and online news media data with R, data privacy and academic research in these fields. She is planning to start her Ph.D. studies in near future.

Datacast Episode 2: Becoming a Deep Learning Expert with Deep Narain Singh

Datacast Episode 2: Becoming a Deep Learning Expert with Deep Narain Singh

Deep Narain Singh is Data Scientist with specialization in machine learning and deep learning. He has extensive work experience in building NLP/Computer Vision products using AI/ML/DL. He has spent 12 years in industry working with startups and large scale companies. He holds a Master’s degree in Data Science from the University Of New Haven/Galvanize and completed his undergraduate in Civil Engineering from NIT Jaipur.

Decision Trees: How to Optimize My Decision-Making Process?

Decision Trees: How to Optimize My Decision-Making Process?

The major advantage of using decision trees is that they are intuitively very easy to explain. They closely mirror human decision-making compared to other regression and classification approaches. They can be displayed graphically, and they can easily handle qualitative predictors without the need to create dummy variables.

The 5 Fundamental Running Times in Computer Science

The 5 Fundamental Running Times in Computer Science

As you see, you should make a habit of thinking about the time complexity of algorithms as you design them. Asymptotic analysis is a powerful tool, but use it wisely. Sometimes optimizing runtime may negatively impact readability or coding time. Whether you like it or not, an effective engineer knows how to strike the right balance between runtime, space, implementation time, maintainability, and readability.

k-Nearest Neighbors: Who are close to you?

k-Nearest Neighbors: Who are close to you?

The k-Nearest Neighbors algorithm is a simple and effective way to classify data. It is an example of instance-based learning, where you need to have instances of data close at hand to perform the machine learning algorithm.