We introduce and study various patrolling algorithms using mobile robots. A team of k mobile robots (patrolmen), is deployed on a weighted graph G, in which edge weights represent distances. The robots perpetually move along the domain not exceeding their maximal speed. The robots need to patrol the graph by regularly visiting all points of the domain. The goal of the patrolling problem is to find the perpetual movement of the robots minimizing idle time, which is the maximal time when a point of the graph remains unseen by any robot. In this thesis, we investigate various versions of patrolling problems, in each case attempting to optimize the idle time. In the first scenario, we consider a case where at most f of k robots may be faulty (unreliable), i.e., they do not report their monitoring activities. We design an optimal algorithm for the open curves (segments), and then use these results to study the case of general graphs. We also propose an optimal patrolling strategy for Eulerian graphs. Afterward, we show that computing idle time for three robots, at most one of which is faulty, is NP-hard for some general graphs. Next, we study the patrolling problem by reliable robots but equipped with distinct visibility ranges, i.e., every robot i has a range of visibility ri representing the distance from its current position, at which the robot can see in each direction. We give the optimal patrolling algorithms for the case of close curves (cycles) and open curves (segments) when all robots have the same maximal speed and different visibility ranges. We also briefly discuss the case where robots have distinct speeds and visibility ranges to show that patrolling by robots equipped with visibility is entirely different than the case of robots with zero visibility. Moreover, we show that patrolling general graphs by robots with the same speed and distinct visibility ranges is NP-hard. Finally, we consider patrolling trees by a team of mobile robots with the same speed and zero visibility. We theoretically show the optimality of an off-line centralized algorithm for trees patrolling. Then, we use these results to experimentally show the efficiency of an on-line distributed algorithm (known as rotor-router) for trees patrolling.