Professor, Department of Computer Science and Engineering
Tapas Mishra Memorial Chair Professor
Design and analysis of computer algorithms, especially, Graph algorithms, Dynamic algorithms, Fault Tolerant Structures, and Randomized algorithms.
Office
KD 307,
Department of Computer Science and Engineering
IIT Kanpur,
Kanpur 208016
PhD (2005)
🢝 CSE, IIT Delhi
🢝 Thesis Title: Efficient randomized algorithms for path problems in graphs. Supervisor: Prof. Sandeep Sen
⋆PhD thesis was submitted in October 2003, but the thesis defence could be held in July 2005 due to delay in the reports of the examiners. So the PhD degree could be awarded only in August 2005.
M.Tech. (1999)
🢝 CSE, IIT Delhi
B.Tech. (1997)
🢝 CSE, IIT Delhi
I, along with my collaborators, have worked primarily in the following areas/topics of algorithms. For each topic, I have stated the most significant publications. The complete list of publications can be found here.
Minimum Cuts
I started working in this area during my sabbatical [2019] at the University of Paderborn, Germany. The area of mincuts (and maximum flows) is so deep, vast, and full of amazing results. I am so fascinated by these aspects that I might like to work in this area for the rest of my professional life. My collaborators and I have been working primarily on the sensitivity aspect of mincuts till now (refer to the following section). However, the following recent work might interest a broader audience.
Fault Tolerant Structures
Consider an algorithmic problem that involves computing a structure. This structure could be a subgraph with some desired properties, for example, a depth first search (DFS) tree, a spanner. This structure could be a data structure that efficiently answers some query, for example, shortest path query. In the real world, the faults (failure of edges or vertices) are inevitable. It is also usually true that faults are transient due to some repair mechanism undertaken in the application. So, the number of faults at any time is small though the set of faults may keep changing with time. In such scenarios, how do we maintain the subgraph or the data structure ?
Two trivial ways to handle the faults are the following:
The first way is very inefficient from the perspective of time, and the second way is very inefficient from the perspective of space.
Therefore, the aim is to design an algorithm that can update the data structure (or the subgraph) upon failure of any given edge efficiently – in time much faster than computing the data structure (or the corresponding subgraph) from scratch. Moreover, it should also answer the corresponding queries very efficiently.
My collaborators and I have designed efficient fault tolerant algorithms for the following problems.
Dynamic graph algorithms
The model underlying the dynamic graph algorithms is quite different from the fault tolerant model described above. In this model, there is an online sequence of updates – insertion or deletion of edges. The aim is to keep a data structure for a given problem so that we can update the data structure efficiently after each update. If there is a query associated with the problem, the aim is to answer each query efficiently as well. We have worked on dynamic graph algorithms for the following graph problems.
Approximate Shortest Paths
Computing all-pairs shortest paths is arguably one of the most fundamental graph problems. However, there does not exist any sub-cubic algorithm for computing all-pairs shortest paths till date. So the aim is to have an algorithm that takes sub-cubic time but computes approximate distances. However, the algorithm must provide a worst-case guarantee on the factor by which the distance is stretched for any pair of vertices. One of the milestone results in this area is the approximate distance oracles designed by Thorup and Zwick. They designed a data structure that provides almost an optimal trade-off between the size of the data structure and the stretch factor. However, they posed it as an open question: Can we build this oracle in quadratic time ? The following 2 articles answered this question in the affirmative.
We also worked on computing nearly 2-approximate shortest paths in undirected unweighted graphs [ICALP 2008, STACS 2005 and Theoretical Computer Science 2009]
Graph Spanner
A spanner is a subgraph that is sparse and still preserves approximately the distance between each pair of vertices in the graph. There is a trade-off between the sparseness of the subgraph and the factor by which the distance between any pair of vertices is stretched – the larger the stretch we can tolerate, the greater the sparseness we can achieve. For undirected unweighted graphs, Halperin and Zwick [1996] designed a simple linear time algorithm for graph spanners while achieving optimal trade-off between the size and the stretch. However, for undirected weighted graphs, there exist many algorithms before 2003 that achieve an almost optimal trade-off between the size and the stretch, but none of them took linear time. Each of these algorithms involves some distance computation, and hence achieve time far from linear.
Research:
Teaching:
🢝 Spending time with my family
Software Engineer
Lucent Technologies, Bangalore
🢝 Feb 1999-November 1999.
Postdoctoral Researcher
🢝 Max Planck Institute for CSE
🢝 October 2003- June 2006.
Assistant Professor
🢝 CSE, IIT Kanpur
🢝 2006-2010.
Associate Professor
🢝 CSE, IIT Kanpur
🢝 2010-2016.
Professor
🢝 CSE, IIT Kanpur
🢝 2016-onwards.
Algorithms indeed matter in solving real-world problems. If you don't believe it, click here
Why good teaching matters ?
In the light of the above facts, if a person does not teach well, he/she is committing an academic crime that is even more serious than plagiarism. Therefore, in my view, teaching needs to be taken very seriously by each teacher. Interestingly, it just requires two qualities to become a good teacher -- (1) passion for the subject, and (2) empathy towards students.
What is an effective way of teaching algorithms?
I teach courses on algorithms. So I shall share my views on teaching from the perspective of algorithms.
There are basically two ways to explain an algorithm to a student. The first way is to define the problem, provide the pseudocode of the algorithm that solves it, and present its proof of correctness and the analysis of its time complexity. Apparently, there is nothing wrong with this method. However, the aim of a course on algorithms is to equip a student with basic skill sets so that he can design new algorithms in the future. The way of teaching algorithms described above will severely hamper the possibility of a student becoming a future researcher in algorithms. The reason is as follows.Any algorithm that we read in a book or research paper is usually the end product. It rarely presents the path that the inventor took to design it. There is no fixed formula to design an algorithm for a problem. Usually, an algorithm emerges after persistent thinking over a problem, getting insights through examples, learning from failed attempts, sometimes abandoning all the previous algorithmic ideas, and taking a new approach to the problem. I think the aim of a course on algorithms should be to make a student experience this wonderful process of algorithm design. This experience will not only help a student get the true picture of algorithm design but also empower him/her with the confidence to work independently on an algorithmic problem in the future.
Based on this realization, another method of explaining an algorithm is to re-invent the algorithm in the class in an interactive session. The instructor tries to ask the right set of questions and encourages the students to answer them. An attempt to answer each question adds to our insight into the problem. Following this approach, the algorithm is gradually unfolded in the class in an interactive manner. Based on the feedback from the students, I have found that this method also helps them fully internalize the algorithm.
I must admit that one of the main reasons why teaching is so enjoyable for me is that I get to teach the best students in India. Many of them are gifted with extraordinary creative and analytical skills.
Teaching and Research complement each other.
I equally enjoy teaching and conducting research. I have found that research and teaching complement each other. For effective teaching, one has to go very deep to fully internalise a concept so that one is able to explain it to a student in the right manner. This process has helped me many times in formulating new fundamental research problems as well. In a similar manner, research encourages one to view a known concept from multiple directions. This helps in effective teaching as well. Moreover, one can bring freshness to the teaching by including some interesting results that one learns from a research paper.